

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立存放映像任務
<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>

請務必確保 S3 儲存貯體具有足夠的安全性來保護 AMI 的內容，而且只要 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)
+ [我可以使用哪些 S3 儲存貯體政策來符合 AWS Config 規則 s3-bucket-ssl-requests-only？](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>

若要在 S3 儲存貯體存放 AMI，請先建立存放映像任務。完成任務所需的時間取決於 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) cmdlet。

```
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) cmdlet。

```
(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) cmdlet。

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

以下為範例輸出。

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

------