Snow Family 디바이스로 가상 머신 이미지 가져오기 - AWS Snowball Edge 개발자 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Snow Family 디바이스로 가상 머신 이미지 가져오기

AWS CLI 및 VM 가져오기/내보내기 서비스를 사용하여 가상 머신 (VM) 이미지를 Snow Family 디바이스에 Amazon 머신 이미지 (AMI) 로 가져올 수 있습니다. VM 이미지를 가져온 후 이미지를 AMI로 등록하고 Amazon EC2 호환 인스턴스로 시작합니다.

Snow Family 디바이스를 주문하기 위한 작업을 생성할 때 Amazon EC2의 AMI를 디바이스에 추가할 수 있습니다. Snow Family 디바이스를 받은 후 이 절차를 사용하십시오. 자세한 정보는 2단계: 컴퓨팅 및 스토리지 옵션 선택을 참조하세요.

를 사용하여 VM 이미지 파일을 AWS OpsHub 업로드할 수도 있습니다. 자세한 내용은 이 안내서의 Amazon EC2 호환 AMI로 디바이스로 이미지 가져오기를 참조하십시오.

1단계: VM 이미지를 준비하여 Snow Family 디바이스에 업로드

VM Import/Export를 사용하여 Amazon EC2 AMI 또는 인스턴스에서 VM 이미지를 내보내거나 선택한 가상화 플랫폼을 AWS 클라우드 사용하여 로컬에서 VM 이미지를 생성하여 VM 이미지를 준비합니다.

VM 가져오기/내보내기를 사용하여 Amazon EC2 인스턴스를 VM 이미지로 내보내려면 VM 가져오기/내보내기 사용 설명서의 VM 가져오기/내보내기를 사용하여 인스턴스를 VM으로 내보내기를 참조하십시오. VM 가져오기/내보내기를 사용하여 Amazon EC2 AMI를 VM 이미지로 내보내려면 VM 가져오기/내보내기 사용 설명서의 Amazon 머신 이미지 (AMI) 에서 직접 VM 내보내기를 참조하십시오.

로컬 환경에서 VM 이미지를 생성하는 경우 Snow Family 디바이스에서 AMI로 사용하도록 이미지를 구성해야 합니다. 환경에 따라 다음 항목을 구성해야 할 수도 있습니다.

  • 운영 체제 구성 및 업데이트.

  • 호스트 이름을 설정합니다.

  • 네트워크 시간 프로토콜 (NTP) 이 구성되어 있는지 확인합니다.

  • 필요한 경우 SSH 공개 키를 포함하십시오. 키 페어의 로컬 사본을 만드십시오. 자세한 내용은 SSH를 사용하여 Snowball Edge의 컴퓨팅 인스턴스에 연결을 참조하십시오.

  • Snow Family 디바이스에서 사용할 소프트웨어를 설치하고 구성하십시오.

참고

Snow Family 디바이스용 디스크 스냅샷을 준비할 때는 다음 제한 사항에 유의하세요.

  • Snow Family 디바이스는 현재 RAW 이미지 형식의 스냅샷 가져오기만 지원합니다.

  • Snow Family 디바이스는 현재 1GB에서 1TB 크기의 스냅샷 가져오기만 지원합니다.

Snow Family 디바이스의 Amazon S3 버킷에 VM 이미지 업로드

VM 이미지를 준비한 후 Snow Family 디바이스 또는 클러스터의 S3 버킷에 업로드합니다. Snow Family 디바이스의 S3 어댑터 또는 Amazon S3 호환 스토리지를 사용하여 스냅샷을 업로드할 수 있습니다.

S3 어댑터를 사용하여 가상 머신 이미지를 업로드하려면
  • cp명령을 사용하여 VM 이미지 파일을 디바이스의 버킷에 복사합니다.

    aws s3 cp image-path s3://S3-bucket-name --endpoint http://S3-object-API-endpoint:443 --profile profile-name

    자세한 내용은 이 가이드의 지원되는 AWS CLI 명령을 참조하십시오.

Snow Family 디바이스에서 Amazon S3 호환 스토리지를 사용하여 VM 이미지를 업로드하려면
  • put-object명령을 사용하여 스냅샷 파일을 디바이스의 버킷에 복사합니다.

    aws s3api put-object --bucket bucket-name --key path-to-snapshot-file --body snapshot-file --profile your-profile --endpoint-url s3api-endpoint-ip

    자세한 내용은 Snowball Edge 디바이스의 S3 객체 사용을 참조하십시오.

2단계: 필수 권한 설정

가져오기에 성공하려면 Snow Family 디바이스, Amazon EC2 및 사용자에 VM 가져오기/내보내기 권한을 설정해야 합니다.

참고

이러한 권한을 제공하는 서비스 역할 및 정책은 Snow Family 디바이스에 있습니다.

VM 가져오기/내보내기에 필요한 권한

가져오기 프로세스를 시작하려면 먼저 Snow Family 디바이스의 VM Import/Export가 역할을 맡을 수 있도록 허용하는 신뢰 정책을 사용하여 IAM 역할을 생성해야 합니다. 역할에는 디바이스의 VM Import/Export가 디바이스의 S3 버킷에 저장된 이미지에 액세스할 수 있도록 허용하는 추가 권한이 부여됩니다.

신뢰 정책 json 파일 생성

다음은 S3 버킷에서 가져와야 하는 스냅샷에 VM Import가 액세스할 수 있도록 역할에 연결하는 데 필요한 신뢰 정책의 예시입니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"vmie.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

신뢰 정책 json 파일로 역할 생성

역할 이름은 vmimport일 수 있습니다. 명령에서 --role-name 옵션을 사용하여 변경할 수 있습니다.

aws iam create-role --role-name role-name --assume-role-policy-document file:///trust-policy-json-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

다음은 create-role 명령의 출력 예시입니다.

{ "Role":{ "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Action":"sts:AssumeRole", "Effect":"Allow", "Principal":{ "Service":"vmie.amazonaws.com" } } ] }, "MaxSessionDuration":3600, "RoleId":"AROACEMGEZDGNBVGY3TQOJQGEZAAAABQBB6NSGNAAAABPSVLTREPY3FPAFOLKJ3", "CreateDate":"2022-04-19T22:17:19.823Z", "RoleName":"vmimport", "Path":"/", "Arn":"arn:aws:iam::123456789012:role/vmimport" } }

역할에 대한 정책 생성

다음 예시 정책에는 Amazon S3에 액세스할 수 있는 최소한의 필수 권한이 있습니다. Amazon S3 버킷 이름을 이미지가 있는 이름으로 변경합니다. 독립형 Snowball Edge 디바이스의 경우 snow-id를 작업 ID로 변경합니다. 디바이스 클러스터의 경우 snow-id를 클러스터 ID로 변경합니다. 또한 접두사를 사용하여 VM Import가 스냅샷을 가져올 수 있는 위치를 더 좁힐 수 있습니다. 다음과 같은 정책 json 파일을 생성합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:GetMetadata" ], "Resource":[ "arn:aws:s3:snow:account-id:snow/snow-id/bucket/import-snapshot-bucket-name", "arn:aws:s3:snow:account-id:snow/snow-id/bucket/import-snapshot-bucket-name/*" ] } ] }

정책 파일을 사용하여 정책을 생성합니다.

aws iam create-policy --policy-name policy-name --policy-document file:///policy-json-file-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

다음은 create-policy 명령의 출력 예시입니다.

{ "Policy":{ "PolicyName":"vmimport-resource-policy", "PolicyId":"ANPACEMGEZDGNBVGY3TQOJQGEZAAAABOOEE3IIHAAAABWZJPI2VW4UUTFEDBC2R", "Arn":"arn:aws:iam::123456789012:policy/vmimport-resource-policy", "Path":"/", "DefaultVersionId":"v1", "AttachmentCount":0, "IsAttachable":true, "CreateDate":"2020-07-25T23:27:35.690000+00:00", "UpdateDate":"2020-07-25T23:27:35.690000+00:00" } }

정책에 역할 연결

이전 역할에 정책을 연결하고 필요한 리소스에 액세스할 수 있는 권한을 부여합니다. 이렇게 하면 로컬 VM Import 서비스가 Amazon S3의 스냅샷을 디바이스에 다운로드할 수 있습니다.

aws iam attach-role-policy --role-name role-name --policy-arn arn:aws:iam::123456789012:policy/policy-name --profile profile-name --endpoint http://snowball-ip:6078 --region snow

호출자에게 필요한 권한

Snowball Edge VM Import가 담당할 역할 외에도 사용자가 VMIE에 역할을 넘길 수 있는 권한을 가지고 있는지 확인해야 합니다. 기본 루트 사용자를 사용하여 가져오기를 수행하는 경우 루트 사용자는 이미 필요한 모든 권한을 가지고 있으므로 이 단계를 건너뛰고 3단계로 이동해도 됩니다.

가져오기를 수행하는 사용자에게 다음 두 IAM 권한을 연결합니다.

  • pass-role

  • get-role

역할에 대한 정책 생성

다음은 사용자가 IAM 역할에 대해 get-rolepass-role 작업을 수행할 수 있도록 허용하는 정책 예시입니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action": "iam:GetRole", "Resource":"*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "importexport.amazonaws.com" } } } ] }

정책 파일을 사용하여 정책을 생성합니다.

aws iam create-policy --policy-name policy-name --policy-document file:///policy-json-file-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

다음은 create-policy 명령의 출력 예시입니다.

{ "Policy":{ "PolicyName":"caller-policy", "PolicyId":"ANPACEMGEZDGNBVGY3TQOJQGEZAAAABOOOTUOE3AAAAAAPPBEUM7Q7ARPUE53C6R", "Arn":"arn:aws:iam::123456789012:policy/caller-policy", "Path":"/", "DefaultVersionId":"v1", "AttachmentCount":0, "IsAttachable":true, "CreateDate":"2020-07-30T00:58:25.309000+00:00", "UpdateDate":"2020-07-30T00:58:25.309000+00:00" } }

정책이 생성되면 Amazon EC2 API 또는 CLI 작업을 직접 호출하여 스냅샷을 가져올 IAM 사용자에게 정책을 연결합니다.

aws iam attach-user-policy --user-name your-user-name --policy-arn arn:aws:iam::123456789012:policy/policy-name --profile profile-name --endpoint http://snowball-ip:6078 --region snow

디바이스에서 Amazon EC2 API를 호출하는 데 필요한 권한

스냅샷을 가져오려면 IAM 사용자에게 ec2:ImportSnapshot 권한이 있어야 합니다. 사용자 액세스를 제한할 필요가 없는 경우 ec2:* 권한을 사용하여 전체 Amazon EC2 액세스 권한을 부여할 수 있습니다. 다음은 디바이스의 Amazon EC2에 대해 부여하거나 제한할 수 있는 권한입니다. 표시된 내용에 따라 정책 파일을 생성합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:ImportSnapshot", "ec2:DescribeImportSnapshotTasks", "ec2:CancelImportTask", "ec2:DescribeSnapshots", "ec2:DeleteSnapshot", "ec2:RegisterImage", "ec2:DescribeImages", "ec2:DeregisterImage" ], "Resource":"*" } ] }

정책 파일을 사용하여 정책을 생성합니다.

aws iam create-policy --policy-name policy-name --policy-document file:///policy-json-file-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

다음은 create-policy 명령의 출력 예시입니다.

{ "Policy": { "PolicyName": "ec2-import.json", "PolicyId": "ANPACEMGEZDGNBVGY3TQOJQGEZAAAABQBGPDQC5AAAAATYN62UNBFYTF5WVCSCZS", "Arn": "arn:aws:iam::123456789012:policy/ec2-import.json", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "IsAttachable": true, "CreateDate": "2022-04-21T16:25:53.504000+00:00", "UpdateDate": "2022-04-21T16:25:53.504000+00:00" } }

정책이 생성되면 Amazon EC2 API 또는 CLI 작업을 직접 호출하여 스냅샷을 가져올 IAM 사용자에게 정책을 연결합니다.

aws iam attach-user-policy --user-name your-user-name --policy-arn arn:aws:iam::123456789012:policy/policy-name --profile profile-name --endpoint http://snowball-ip:6078 --region snow

3단계: VM 이미지를 디바이스의 스냅샷으로 가져오기

다음 단계는 VM 이미지를 기기의 스냅샷으로 가져오는 것입니다. S3Bucket파라미터 값은 VM 이미지가 포함된 버킷의 이름입니다. S3Key파라미터 값은 이 버킷에 있는 VM 이미지 파일의 경로입니다.

aws ec2 import-snapshot --disk-container "Format=RAW,UserBucket={S3Bucket=bucket-name,S3Key=image-file}" --profile profile-name --endpoint http://snowball-ip:8008 --region snow

자세한 내용은 AWS CLI 명령 참조의 import-snapshot을 참조하십시오.

이 명령은 다음과 같은 스위치를 지원하지 않습니다.

  • [--client-data value]

  • [--client-token value]

  • [--dry-run]

  • [--no-dry-run]

  • [--encrypted]

  • [--no-encrypted]

  • [--kms-key-id value]

  • [--tag-specifications value]

예 명령 출력 import-snapshot
{ "ImportTaskId":"s.import-snap-1234567890abc", "SnapshotTaskDetail":{ "DiskImageSize":2.0, "Encrypted":false, "Format":"RAW", "Progress":"3", "Status":"active", "StatusMessage":"pending", "UserBucket":{ "S3Bucket":"bucket", "S3Key":"vmimport/image01" } } }
참고

Snow Family 디바이스는 현재 디바이스당 한 번에 하나의 활성 가져오기 작업만 실행할 수 있습니다. 새 가져오기 작업을 시작하려면 현재 작업이 완료될 때까지 기다리거나 클러스터에서 사용 가능한 다른 노드를 선택합니다. 원하는 경우 현재 가져오기를 취소할 수도 있습니다. 지연을 방지하려면 가져오기가 진행 중인 동안에는 Snow Family 장치를 재부팅하지 마십시오. 디바이스를 재부팅하면 가져오기가 실패하고 디바이스에 액세스할 수 있게 될 때 진행 상황이 삭제됩니다. 스냅샷 가져오기 태스크 상태를 확인하려면 다음 명령을 사용합니다.

aws ec2 describe-import-snapshot-tasks --import-task-ids id --profile profile-name --endpoint http://snowball-ip:8008 --region snow

4단계: 스냅샷을 AMI로 등록

디바이스로 스냅샷을 성공적으로 가져오면 register-image 명령을 사용하여 스냅샷을 등록할 수 있습니다.

참고

AMI의 모든 스냅샷을 사용할 수 있는 경우에만 AMI를 등록할 수 있습니다.

자세한 내용은 명령 참조의 register-image를 참조하십시오. AWS CLI

예 명령의 register-image
aws ec2 register-image \ --name ami-01 \ --description my-ami-01 \ --block-device-mappings "[{\"DeviceName\": \"/dev/sda1\",\"Ebs\":{\"Encrypted\":false,\"DeleteOnTermination\":true,\"SnapshotId\":\"snapshot-id\",\"VolumeSize\":30}}]" \ --root-device-name /dev/sda1 \ --profile profile-name \ --endpoint http://snowball-ip:8008 \ --region snow

다음은 블록 디바이스 매핑 JSON의 예시입니다. 자세한 내용은 명령 참조의 register-image block-device-mapping 매개 변수를 참조하십시오. AWS CLI

[ { "DeviceName": "/dev/sda", "Ebs": { "Encrypted": false, "DeleteOnTermination": true, "SnapshotId": "snapshot-id", "VolumeSize": 30 } } ]
예 명령의 register-image
{ "ImageId": "s.ami-8de47d2e397937318" }

5단계: AMI에서 인스턴스 시작

인스턴스를 시작하려면 AWS CLI 명령 참조의 run-instance를 참조하십시오.

image-id파라미터 값은 명령 출력의 ImageId register-image 이름 값입니다.

aws ec2 run-instances --image-id image-id --instance-type instance-type --profile profile-name --endpoint http://snowball-ip:8008 --region snow
{ "Instances":[ { "SourceDestCheck":false, "CpuOptions":{ "CoreCount":1, "ThreadsPerCore":2 }, "InstanceId":"s.i-12345a73123456d1", "EnaSupport":false, "ImageId":"s.ami-1234567890abcdefg", "State":{ "Code":0, "Name":"pending" }, "EbsOptimized":false, "SecurityGroups":[ { "GroupName":"default", "GroupId":"s.sg-1234567890abc" } ], "RootDeviceName":"/dev/sda1", "AmiLaunchIndex":0, "InstanceType":"sbe-c.large" } ], "ReservationId":"s.r-1234567890abc" }
참고

를 AWS OpsHub 사용하여 인스턴스를 시작할 수도 있습니다. 자세한 내용은 이 안내서의 Amazon EC2 호환 인스턴스 시작을 참조하십시오.

추가 AMI 작업

추가 AWS CLI 명령을 사용하여 스냅샷 가져오기 상태를 모니터링하고, 가져온 스냅샷에 대한 세부 정보를 얻고, 스냅샷 가져오기를 취소하고, 가져온 후 스냅샷을 삭제 또는 등록 취소할 수 있습니다.

스냅샷 가져오기 상태 모니터링

Amazon EC2 describe-import-snapshot-tasks 명령을 실행하여 현재 가져오기 진행 상태를 확인할 수 있습니다. 이 명령은 에서 페이지 매김 및 필터링을 지원합니다. task-state

예 명령의 describe-import-snapshot-tasks
aws ec2 describe-import-snapshot-tasks --import-task-ids id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
describe-import-snapshot-tasks명령 출력의
{ "ImportSnapshotTasks": [ { "ImportTaskId": "s.import-snap-8f6bfd7fc9ead9aca", "SnapshotTaskDetail": { "Description": "Created by AWS-Snowball-VMImport service for s.import-snap-8f6bfd7fc9ead9aca", "DiskImageSize": 8.0, "Encrypted": false, "Format": "RAW", "Progress": "3", "SnapshotId": "s.snap-848a22d7518ad442b", "Status": "active", "StatusMessage": "pending", "UserBucket": { "S3Bucket": "bucket1", "S3Key": "image1" } } } ] }
참고

이 명령은 지난 7일 이내에 성공적으로 완료되었거나 삭제된 것으로 표시된 작업에 대한 출력만 표시합니다. 필터링은 Name=task-state, Values=active | deleting | deleted | completed만 지원합니다.

이 명령은 다음 매개변수를 지원하지 않습니다.

  • [--dry-run]

  • [--no-dry-run]

가져오기 작업 취소

가져오기 태스크를 취소하려면 cancel-import-task 명령을 실행합니다.

예 명령의 cancel-import-task
aws ec2 cancel-import-task --import-task-id import-task-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
cancel-import-task명령 출력의
{ "ImportTaskId": "s.import-snap-8234ef2a01cc3b0c6", "PreviousState": "active", "State": "deleting" }
참고

완료 상태가 아닌 태스크만 취소할 수 있습니다.

이 명령은 다음 매개변수를 지원하지 않습니다.

  • [--dry-run]

  • [--no-dry-run]

스냅샷 설명

스냅샷을 가져온 후 이 명령을 사용하여 스냅샷을 설명할 수 있습니다. 스냅샷을 필터링하려면 이전 가져오기 태스크 응답의 스냅샷 ID를 사용하여 snapshot-ids에서 전달할 수 있습니다. 이 명령은 volume-idstatus, 및 에 대한 페이지 매김 및 필터를 지원합니다. start-time

예 명령의 describe-snapshots
aws ec2 describe-snapshots --snapshot-ids snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
describe-snapshots명령 출력의
{ "Snapshots": [ { "Description": "Created by AWS-Snowball-VMImport service for s.import-snap-8f6bfd7fc9ead9aca", "Encrypted": false, "OwnerId": "123456789012", "SnapshotId": "s.snap-848a22d7518ad442b", "StartTime": "2020-07-30T04:31:05.032000+00:00", "State": "completed", "VolumeSize": 8 } ] }

이 명령은 다음 매개변수를 지원하지 않습니다.

  • [--restorable-by-user-ids value]

  • [--dry-run]

  • [--no-dry-run]

Snow Family 디바이스에서 스냅샷 삭제하기

소유하고 있어 더 이상 필요하지 않은 스냅샷을 제거하려면 delete-snapshot 명령을 사용할 수 있습니다.

delete-snapshot명령의
aws ec2 delete-snapshot --snapshot-id snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
참고

Snowball Edge는 보류 중 상태이거나 AMI의 루트 디바이스로 지정된 스냅샷의 삭제를 지원하지 않습니다.

이 명령은 다음 매개 변수를 지원하지 않습니다.

  • [--dry-run]

  • [--no-dry-run]

AMI 등록 해제

더 이상 필요 없는 AMI의 등록을 취소하려면 deregister-image 명령을 사용할 수 있습니다. 보류 중 상태인 AMI의 등록 취소는 현재 지원되지 않습니다.

deregister-image명령의
aws ec2 deregister-image --image-id image-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow

이 명령은 다음 매개 변수를 지원하지 않습니다.

  • [--dry-run]

  • [--no-dry-run]