Criar uma tarefa de armazenamento de imagem
Quando você armazena uma AMI em um bucket do S3, uma tarefa de armazenamento de imagem é criada. Você pode usar a tarefa de armazenamento de imagem para monitorar o andamento e o resultado do processo.
Conteúdo
Proteger suas AMIs
É importante garantir que o bucket do S3 esteja configurado com segurança suficiente para proteger o conteúdo da AMI e que a segurança seja mantida enquanto os objetos da AMI permanecerem no bucket. Se isso não puder ser feito, o uso dessas APIs não é recomendado. Não permita acesso público ao bucket do S3. Recomendamos que você ative a Server Side Encryption (Criptografia do lado do servidor) para o bucket do S3 no qual você armazena as AMIs, embora não seja necessário.
Para obter informações sobre como definir as configurações de segurança apropriadas para os buckets do S3, consulte os seguintes tópicos de segurança:
Quando os snapshots da AMI são copiados para o objeto S3, os dados são copiados em conexões TLS. É possível armazenar AMIs com snapshots criptografados, mas os snapshots são descriptografados como parte do processo de armazenamento.
Permissões para armazenar e restaurar AMIs usando o S3
Caso as entidades principais do IAM armazenem ou restaurem AMIs usando o Amazon S3, você precisará conceder a elas as permissões necessárias.
A política de exemplo a seguir inclui todas as ações necessárias para permitir que uma entidade principal do IAM execute as tarefas de armazenamento e restauração.
Também é possível criar políticas do IAM que concedam às entidades principais acesso apenas a recursos específicos. Para obter mais exemplos de políticas, consulte Gerenciamento de acesso para recursos da AWS no Guia do usuário do IAM.
nota
Se os snapshots que compõem a AMI estiverem criptografados ou se a conta estiver habilitada para criptografia por padrão, seu principal do IAM deverá ter permissão para usar a chave 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": "*"
}
]
}
Criar tarefas de armazenamento e restauração de imagem
Para armazenar uma AMI em um bucket do S3, comece criando uma tarefa de armazenamento de imagem. O tempo necessário para concluir a tarefa depende do tamanho da AMI. Você pode acompanhar o andamento da tarefa até que ela tenha êxito ou falhe.
Para criar a tarefa de armazenamento de imagem
Use o comando create-store-image-task. Especifique o ID da AMI e o nome do bucket do S3 no qual a AMI será armazenada.
aws ec2 create-store-image-task \ --image-id
ami-1234567890abcdef0
\ --bucketamzn-s3-demo-bucket
O seguinte é um exemplo de saída.
{ "ObjectKey": "ami-1234567890abcdef0.bin" }
Para descrever o andamento de uma tarefa de armazenamento de AMI
Use o comando describe-store-image-tasks.
aws ec2 describe-store-image-tasks
O seguinte é um exemplo de saída.
{ "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" } ] }
Para criar uma tarefa de armazenamento de imagem
Use o comando create-restore-image-task. Usando os valores de Bucket
e S3ObjectKey
da describe-store-image-tasks
saída, especifique a chave de objeto da AMI e o nome do bucket do S3 para o qual a AMI foi copiada. Especifique também um nome para a AMI restaurada. O nome deve ser exclusivo para AMIs na região dessa conta.
nota
A AMI restaurada obtém um novo ID de AMI.
aws ec2 create-restore-image-task \ --object-key
ami-1234567890abcdef0
.bin \ --bucketamzn-s3-demo-bucket
\ --name "New AMI Name
"
O seguinte é um exemplo de saída.
{ "ImageId": "ami-0eab20fe36f83e1a8" }