

# 保存イメージタスクを作成する
<a name="work-with-ami-store-restore"></a>

AMI を S3 バケットに保存するときに、保存イメージタスクが作成されます。保存イメージタスクを使用して、プロセスの進行状況と結果をモニタリングできます。

**Topics**
+ [AMI のセキュリティ保護](#securing-amis)
+ [S3 を使用して AMI を保存および復元するためのアクセス権限](#ami-s3-permissions)
+ [保存イメージタスクを作成する](#create-store-image-task)
+ [復元イメージタスクを作成する](#create-restore-image-task)

## AMI のセキュリティ保護
<a name="securing-amis"></a>

AMI のコンテンツを保護するために十分なセキュリティをもって S3 バケットが確実に設定されていること、および AMI オブジェクトがバケット内に残っている限り、セキュリティが確実に維持されるようにすることが重要です。これを実行できない場合は、これらの API の使用はお勧めしません。S3 バケットへのパブリックアクセスが許可されていないことを確認します。必須ではありませんが、AMI を保存する S3 バケットのために[サーバー側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)を有効にすることをお勧めします。

S3 バケットに適切なセキュリティを設定する方法については、次のセキュリティトピックをご参照ください。
+ [Amazon S3 ストレージへのパブリックアクセスのブロック](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
+ [Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
+ [AWS Config ルールの s3-bucket-ssl-requests-only に準拠するには、どの S3 バケットポリシーを使用できますか?](https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule)
+ [Amazon S3 サーバーアクセスログ記録の有効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)

AMI スナップショットが S3 オブジェクトにコピーされると、データは TLS 接続を介してコピーされます。暗号化されたスナップショットを使用して AMI を保存できますが、スナップショットは保存プロセスの一部として復号されます。

## S3 を使用して AMI を保存および復元するためのアクセス権限
<a name="ami-s3-permissions"></a>

IAM プリンシパルが Amazon S3 を使用して AMI を保存または復元する場合は、必要な許可を付与する必要があります。

次のポリシーの例には、IAM プリンシパルが保存タスクと復元タスクを実行できるようにするために必要なすべてのアクションが含まれています。

特定のリソースへのアクセス権のみをプリンシパルに付与する IAM ポリシーを作成することもできます。ポリシーの例については、「*IAM ユーザーガイド*」の「[AWS リソースのアクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)」を参照してください。

**注記**  
AMI を構成するスナップショットが暗号化されている場合、またはアカウントの暗号化がデフォルトで有効になっている場合は、IAM プリンシパルに KMS キーを使用するための許可が付与されている必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:AbortMultipartUpload",
                "ebs:CompleteSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:ListChangedBlocks",
                "ebs:ListSnapshotBlocks",
                "ebs:PutSnapshotBlock",
                "ebs:StartSnapshot",
                "ec2:CreateStoreImageTask",
                "ec2:DescribeStoreImageTasks",
                "ec2:CreateRestoreImageTask",
                "ec2:GetEbsEncryptionByDefault",
                "ec2:DescribeTags",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 保存イメージタスクを作成する
<a name="create-store-image-task"></a>

AMI を S3 バケットに保存するには、まず保存イメージタスクを作成します。タスクを完了するのにかかる時間は、AMI のサイズによって異なります。タスクが成功または失敗するまで、タスクの進行状況を追跡できます。

------
#### [ AWS CLI ]

**保存イメージタスクを作成するには**  
[create-store-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-store-image-task.html) コマンドを使用します。

```
aws ec2 create-store-image-task \
    --image-id {{ami-0abcdef1234567890}} \
    --bucket {{amzn-s3-demo-bucket}}
```

以下は出力の例です。

```
{
  "ObjectKey": "ami-0abcdef1234567890.bin"
}
```

**保存イメージタスクの進行状況を表示するには**  
[describe-store-image-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-store-image-tasks.html) コマンドを使用します。

```
aws ec2 describe-store-image-tasks \
    --image-ids{{ ami-0abcdef1234567890}} \
    --query StoreImageTaskResults[].StoreTaskState \
    --output text
```

以下は出力の例です。

```
InProgress
```

------
#### [ PowerShell ]

**保存イメージタスクを作成するには**  
[New-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2StoreImageTask.html) コマンドレットを使用します。

```
New-EC2StoreImageTask `
    -ImageId {{ami-0abcdef1234567890}} `
    -Bucket {{amzn-s3-demo-bucket}}
```

以下は出力の例です。

```
ObjectKey         : ami-0abcdef1234567890.bin
```

**保存イメージタスクの進行状況を表示するには**  
[Get-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2StoreImageTask.html) コマンドレットを使用します。

```
(Get-EC2StoreImageTask -ImageId {{ami-0abcdef1234567890}}).StoreTaskState
```

以下は出力の例です。

```
InProgress
```

------

## 復元イメージタスクを作成する
<a name="create-restore-image-task"></a>

復元された AMI の名前を指定する必要があります。このアカウントの名前は、リージョン内の AMI に対して一意である必要があります。復元された AMI は、新しい AMI ID を取得します。

------
#### [ AWS CLI ]

**復元イメージタスクを作成するには**  
[create-restore-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-restore-image-task.html) コマンドを使用します。

```
aws ec2 create-restore-image-task \
    --object-key {{ami-0abcdef1234567890}}.bin \
    --bucket {{amzn-s3-demo-bucket}} \
    --name "{{my-restored-ami}}"
```

以下は出力の例です。

```
{
   "ImageId": "ami-1234567890abcdef0"
}
```

------
#### [ PowerShell ]

**復元イメージタスクを作成するには**  
[New-EC2RestoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2RestoreImageTask.html) コマンドレットを使用します。

```
New-EC2RestoreImageTask `
    -ObjectKey {{ami-0abcdef1234567890}}.bin `
    -Bucket {{amzn-s3-demo-bucket}} `
    -Name "{{my-restored-ami}}"
```

以下は出力の例です。

```
ImageId         : ami-1234567890abcdef0
```

------