创建存储映像任务
将 AMI 存储在 S3 存储桶中时,将创建存储映像任务。您可以使用存储映像任务来监控该过程的进度和结果。
保护您的 AMI
务必确保 S3 存储桶配置有足够的安全性来保护 AMI 的内容,并确保只要 AMI 对象仍保留在存储桶中,安全性将保持不变。如果无法做到这一点,建议不要使用这些 API。确保不允许对 S3 存储桶进行公开访问。我们建议为存储 AMI 的 S3 存储桶启用服务器端加密,但不是必需要求。
有关如何为 S3 存储桶设置适当的安全设置的信息,请查看以下安全主题:
当 AMI 快照复制到 S3 对象时,将通过 TLS 连接复制数据。您可以使用加密快照存储 AMI,但是快照会作为存储流程的一部分进行解密。
使用 S3 存储和还原 AMI 的权限
如果您的 IAM 主体将使用 Amazon S3 来存储或还原 AMI,则需要向其授予所需权限。
以下示例策略包括允许 IAM 委托人执行存储和还原任务需要的所有操作。
此外,您还可以创建向主体授予仅访问指定资源权限的 IAM policy。如需了解更多示例策略,请参阅《IAM 用户指南》中的 AWS 资源的访问管理。
注意
如果构成 AMI 的快照已加密,或者账户默认启用了加密功能,您的 IAM 主体必须具有使用 KMS 密钥的权限。
{
"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": "*"
}
]
}
创建存储和还原映像任务
要将 AMI 存储在 S3 存储桶中,首先要创建存储映像任务。完成任务所需的时间取决于 AMI 的大小。您可以跟踪该任务的进度,直到其成功或失败。
创建存储映像任务
使用 create-store-image-task 命令。指定 AMI 的 ID 以及要在其中存储 AMI 的 S3 存储桶的名称。
aws ec2 create-store-image-task \ --image-id
ami-1234567890abcdef0
\ --bucketamzn-s3-demo-bucket
下面是示例输出。
{ "ObjectKey": "ami-1234567890abcdef0.bin" }
描述存储映像任务的进度
使用 describe-store-image-tasks 命令。
aws ec2 describe-store-image-tasks
下面是示例输出。
{ "StoreImageTaskResults": [ { "AmiId": "
ami-1234567890abcdef0
", "Bucket": "amzn-s3-demo-bucket
", "ProgressPercentage": 17, "S3objectKey": "ami-1234567890abcdef0
.bin", "StoreTaskState": "InProgress", "StoreTaskFailureReason": null, "TaskStartTime": "2022-01-01T01:01:01.001Z" } ] }
创建恢复映像任务
使用 create-restore-image-task 命令。使用来自 S3ObjectKey
输出的 Bucket
和 describe-store-image-tasks
的值,请指定 AMI 的对象键以及要将 AMI 复制到的 S3 存储桶的名称。还可以为还原的 AMI 指定名称。名称对该账户在该区域中的 AMI 必须唯一。
注意
还原的 AMI 将获得一个新 AMI ID。
aws ec2 create-restore-image-task \ --object-key
ami-1234567890abcdef0
.bin \ --bucketamzn-s3-demo-bucket
\ --name "New AMI Name
"
下面是示例输出。
{ "ImageId": "ami-0eab20fe36f83e1a8" }