내용으로 건너뛰기

여러 리전 또는 계정 간에 AMI를 복사할 때 발생하는 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Machine Image(AMI)를 한 AWS 리전이나 AWS 계정에서 다른 리전이나 계정으로 복사하고 싶습니다. 하지만 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 오류가 발생합니다.

해결 방법

리전 간에 AMI를 복사하려면 스냅샷 및 AWS Key Management Service(AWS KMS) 암호화 키와 같은 AMI와 해당 구성 요소에 대한 권한을 구성하십시오.

권한 오류 해결

IAM 권한 누락

AWS Identity and Access Management(IAM) 사용자 또는 역할에 AMI를 복사하는 데 필요한 권한이 없는 경우, 다음 오류가 발생할 수 있습니다.

"You are not authorized to perform this operation"

이 문제를 해결하려면 IAM 엔터티에 필요한 권한이 있는지 확인하십시오.

AMI 스토리지 액세스 권한 누락

공유 AMI를 복사했는데 대상 계정에서 연결된 스냅샷에 액세스할 수 없는 경우 다음 오류가 발생할 수 있습니다.

"You do not have permission to access the storage of this AMI"

이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. 소스 AMI를 공유하려면 AMI 권한 편집을 선택합니다.
  2. 계정 권한을 생성할 때 연결된 스냅샷에 '볼륨 생성' 권한 추가를 선택합니다.
  3. 소스 AMI를 대상 계정과 공유합니다.
    참고: AMI를 이미 공유한 경우 볼륨 생성 권한을 선택하여 소스 계정에서 AMI를 삭제하고 대상으로 다시 공유하십시오.

암호화된 AMI 및 AWS KMS 키 문제 해결

암호화된 AMI의 경우 복사 프로세스 중에 대상 계정이 암호 해독을 위해 소스 AWS KMS 키에 액세스해야 합니다. 또한 대상 계정은 동일한 키를 사용하거나 대상 리전에 일치하는 키가 있어야 합니다.

암호화된 AMI에 대한 권한을 구성하려면 대상 계정에 KMS 키에 대한 액세스 권한을 부여한 다음, 키 액세스를 위한 IAM 정책을 생성하십시오.

대상 계정에 키에 대한 액세스 권한 부여

암호화된 AMI를 처리하려면 소스 계정에서 다음 단계를 완료하십시오.

  1. AWS KMS 콘솔을 엽니다.
  2. 탐색 창에서 고객 관리형 키를 선택합니다.
  3. AMI를 암호화하는 데 사용한 KMS 키를 선택합니다.
  4. 키 정책기본 보기에서 다른 AWS 계정 추가를 선택합니다.
  5. 대상 계정 ID를 입력합니다.
  6. 변경 사항 저장을 선택합니다.
  7. 정책 보기에서 편집을 선택합니다.
  8. 다음 액세스 정책을 입력합니다.
            {
              "Sid": "Allow use of the key",
              "Effect": "Allow",
              "Principal": {"AWS": [
                "arn:aws:iam::[SOURCE_ACCOUNT_ID]:user/KeyUser",
                "arn:aws:iam::[TARGET_ACCOUNT_ID]:root"
              ]},
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
              ],
             "Resource": "*"
            },
            {
              "Sid": "Allow attachment of persistent resources",
              "Effect": "Allow",
              "Principal": {"AWS": [
                "arn:aws:iam::SOURCE_ACCOUNT_ID:user/KeyUser",
                "arn:aws:iam::DESTINATION_ACCOUNT_ID:root"  
              ]},
              "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
              ],
              "Resource": "*",
              "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
            }
    참고: SOURCE_ACCOUNT_ID를 소스 계정 ID로 바꾸고 DESTINATION_ACCOUNT_ID를 대상 계정 ID로 바꾸십시오.

대상 계정에 키 액세스 권한을 부여하기 위한 IAM 정책 생성

대상 계정에 IAM 정책을 생성합니다.

정책 예시:

      {
          "Version": "2012-10-17",
          "Statement": [{
           "Sid": "AllowUseOfTheKey",
           "Effect": "Allow",
           "Action": ["kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey"],
           "Resource": ["KEY_ARN"]
      }, {
           "Sid": "AllowAttachmentOfPersistentResources",
           "Effect": "Allow",
           "Action": ["kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant"],
           "Resource": ["KEY_ARN"],
           "Condition": {
               "Bool": {
                   "kms:GrantIsForAWSResource": true
              }
           }
       }]
   }

참고: KEY_ARN을 AWS KMS 키의 Amazon 리소스 이름(ARN)으로 바꾸십시오.

그런 다음, 암호화된 AMI를 사용해야 하는 IAM 사용자 또는 역할에 정책을 연결합니다.

관련 정보

공유된 Amazon EBS 스냅샷을 암호화하는 데 사용되는 KMS 키 공유

복사한 AMI에서 EC2 인스턴스를 시작할 수 없는 이유는 무엇입니까?

AWS 공식업데이트됨 10달 전