스토어 이미지 작업(Store Image Task) 만들기
스토어 이미지 작업(Store Image Task) 만들기
AMI를 S3 버킷에 저장하면 스토어 이미지 작업(store image task)이 생성돼요. 이 작업으로 프로세스의 진행 상황과 결과를 모니터링할 수 있어요. 이 절에서는 AMI를 S3에 저장하고 복원(restore)할 때 필요한 보안과 권한, 그리고 각 작업을 만드는 방법을 설명할게요.
출처: 문서
본문
AMI를 S3 버킷에 저장하면 스토어 이미지 작업이 생성돼요. 이 작업으로 프로세스의 진행 상황과 결과를 모니터링할 수 있어요.
AMI 보안 유지하기
AMI 내용을 보호할 수 있을 만큼 S3 버킷이 충분히 안전하게 구성되어 있고, AMI 객체가 버킷에 남아 있는 동안 그 보안이 유지되는지 확인하는 것이 중요해요. 이렇게 할 수 없다면 이 API 사용은 권장하지 않아요. S3 버킷에 대한 공개 접근을 허용하지 않도록 하세요. AMI를 저장하는 S3 버킷에는 Server-side encryption을 활성화하는 것을 권장합니다(필수는 아니에요).
S3 버킷의 적절한 보안 설정 방법에 대한 정보는 다음 보안 주제를 참고하세요.
- Blocking public access to your Amazon S3 storage
- Setting default server-side encryption behavior for Amazon S3 buckets
- What S3 bucket policy can I use to comply with the AWS Config rule s3-bucket-ssl-requests-only?
- Enabling Amazon S3 server access logging
AMI 스냅샷이 S3 객체로 복사될 때 데이터는 TLS 연결을 통해 복사돼요. 암호화된 스냅샷이 포함된 AMI도 저장할 수 있지만, 스냅샷은 저장 과정의 일부로 복호화돼요.
S3를 사용해 AMI를 저장·복원하기 위한 권한
IAM 프린시펄(principal)이 Amazon S3를 사용해 AMI를 저장하거나 복원한다면 필요한 권한을 부여해야 해요.
다음 예시 정책에는 IAM 프린시펄이 store 및 restore 작업을 수행하는 데 필요한 모든 작업(action)이 포함되어 있어요.
IAM 정책을 만들어 특정 리소스에만 접근을 허용할 수도 있어요. 더 많은 예시 정책은 IAM User Guide의 Access management for AWS resources를 참고하세요.
참고
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": "*"
}
]
}
스토어 이미지 작업 만들기
AMI를 S3 버킷에 저장하려면 먼저 스토어 이미지 작업을 만들어요. 작업을 완료하는 데 걸리는 시간은 AMI 크기에 따라 달라져요. 작업이 성공하거나 실패할 때까지 진행 상황을 추적할 수 있어요.
AWS CLI —
스토어 이미지 작업을 만들려면
create-store-image-task 명령을 사용합니다.
aws ec2 create-store-image-task \
--image-id ami-0abcdef1234567890 \
--bucket amzn-s3-demo-bucket
다음은 출력 예시예요.
{
"ObjectKey": "ami-0abcdef1234567890.bin"
}
스토어 이미지 작업의 진행 상황을 확인하려면
describe-store-image-tasks 명령을 사용합니다.
aws ec2 describe-store-image-tasks \
--image-ids ami-0abcdef1234567890 \
--query StoreImageTaskResults[].StoreTaskState \
--output text
다음은 출력 예시예요.
InProgress
PowerShell —
스토어 이미지 작업을 만들려면
New-EC2StoreImageTask cmdlet을 사용합니다.
New-EC2StoreImageTask `
-ImageId ami-0abcdef1234567890 `
-Bucket amzn-s3-demo-bucket
다음은 출력 예시예요.
ObjectKey : ami-0abcdef1234567890.bin
스토어 이미지 작업의 진행 상황을 확인하려면
Get-EC2StoreImageTask cmdlet을 사용합니다.
(Get-EC2StoreImageTask -ImageId ami-0abcdef1234567890).StoreTaskState
다음은 출력 예시예요.
InProgress
리스토어 이미지 작업(Restore Image Task) 만들기
복원할 AMI의 이름을 지정해야 해요. 이름은 이 계정의 리전 안에서 AMI에 대해 고유해야 합니다. 복원된 AMI에는 새로운 AMI ID가 부여돼요.
AWS CLI —
리스토어 이미지 작업을 만들려면
create-restore-image-task 명령을 사용합니다.
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 cmdlet을 사용합니다.
New-EC2RestoreImageTask `
-ObjectKey ami-0abcdef1234567890.bin `
-Bucket amzn-s3-demo-bucket `
-Name "my-restored-ami"
다음은 출력 예시예요.
ImageId : ami-1234567890abcdef0