특정 AWS 계정과 AMI 공유하기

특정 AWS 계정과 AMI 공유하기

AMI를 공개(public)로 만들지 않고도 특정 AWS 계정과 공유할 수 있어요. 필요한 것은 AWS 계정 ID뿐입니다. 이 글에서는 콘솔·CLI·PowerShell로 명시적 시작 권한(launch permission)을 부여하거나 제거하는 방법을 살펴볼게요.

출처: 문서

본문

AMI를 공개로 만들지 않고 특정 AWS 계정과 공유할 수 있어요. 필요한 것은 AWS 계정 ID뿐입니다.

AWS 계정 ID는 012345678901 같은 12자리 숫자로, AWS 계정을 고유하게 식별해요. 자세한 내용은 AWS Account Management Reference Guide의 View AWS account identifiers를 참고하세요.

고려 사항 (Considerations)

특정 AWS 계정과 AMI를 공유할 때 다음을 고려해요.

  • 암호화 스냅샷: 암호화된 스냅샷은 KMS 키로 암호화되어야 해요. 기본 AWS 관리형 키로 암호화된 스냅샷을 백업으로 사용하는 AMI는 공유할 수 없어요. 암호화된 스냅샷을 백업으로 사용하는 AMI를 공유한다면, 스냅샷 암호화에 사용된 KMS 키를 AWS 계정이 사용하도록 허용해야 해요. 자세한 내용은 조직과 OU가 KMS 키를 사용하도록 허용을 참고하세요. 고객 관리형 키로 암호화할 때 Auto Scaling 인스턴스를 시작하는 데 필요한 키 정책을 설정하려면 Amazon EC2 Auto Scaling User Guide의 Required AWS KMS key policy for use with encrypted volumes를 참고하세요.
  • 리전(Region): AMI는 리전 리소스예요. AMI를 공유하면 해당 리전에서만 사용할 수 있어요. AMI를 다른 리전에서 사용할 수 있게 하려면 AMI를 그 리전에 복사한 뒤 공유해요. 자세한 내용은 Copy an Amazon EC2 AMI를 참고하세요.
  • 사용(Usage): AMI를 공유하면 사용자는 AMI에서 인스턴스를 시작할 수만 있어요. 삭제, 공유, 수정은 할 수 없어요. 하지만 사용자가 내 AMI로 인스턴스를 시작한 뒤에는 그 인스턴스에서 AMI를 만들 수 있어요.
  • 공유 AMI 복사(Copying shared AMIs): 다른 계정의 사용자가 공유 AMI를 복사하려면, AMI를 백업하는 저장소에 대한 읽기 권한을 부여해야 해요. 자세한 내용은 Cross-account copying을 참고하세요.
  • 청구(Billing): 다른 AWS 계정이 AMI로 인스턴스를 시작한다고 해서 내게 청구되지는 않아요. AMI로 인스턴스를 시작하는 계정이 그 인스턴스에 대해 청구됩니다.

콘솔 (Console)

명시적 시작 권한을 부여하려면

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. 탐색 창에서 AMIs를 선택해요.
  3. 목록에서 AMI를 선택하고 Actions, Edit AMI permissions를 선택해요.
  4. Private를 선택해요.
  5. Shared accounts에서 Add account ID를 선택해요.
  6. AWS account ID에 AMI를 공유할 AWS 계정 ID를 입력하고 Share AMI를 선택해요. 여러 계정과 공유하려면 필요한 모든 계정 ID를 추가할 때까지 5~6단계를 반복해요.
  7. 완료되면 Save changes를 선택해요.
  8. (선택) AMI를 공유한 AWS 계정 ID를 보려면 목록에서 AMI를 선택하고 Permissions 탭을 선택해요. 내게 공유된 AMI를 찾으려면 Find shared AMIs to use for Amazon EC2 instances를 참고하세요.

AWS CLI

다음 예시처럼 modify-image-attribute 명령을 사용해 AMI를 공유해요.

명시적 시작 권한을 부여하려면

다음 예시는 지정한 AMI에 대해 지정한 AWS 계정에 시작 권한을 부여합니다.

aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{UserId=123456789012}]"

계정의 시작 권한을 제거하려면

다음 예시는 지정한 AMI에 대해 지정한 AWS 계정의 시작 권한을 제거합니다.

aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Remove=[{UserId=123456789012}]"

모든 시작 권한을 제거하려면

다음 예시는 지정한 AMI의 모든 공개 및 명시적 시작 권한을 제거합니다. AMI 소유자는 항상 시작 권한을 가지므로 이 명령의 영향을 받지 않아요.

aws ec2 reset-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission

PowerShell

다음 예시처럼 Edit-EC2ImageAttribute 명령(Tools for Windows PowerShell)을 사용해 AMI를 공유해요.

명시적 시작 권한을 부여하려면

다음 예시는 지정한 AMI에 대해 지정한 AWS 계정에 시작 권한을 부여합니다.

Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 ` 
    -Attribute launchPermission `
    -OperationType add `
    -UserId "123456789012"

계정의 시작 권한을 제거하려면

다음 예시는 지정한 AMI에 대해 지정한 AWS 계정의 시작 권한을 제거합니다.

Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission -OperationType remove `
    -UserId "123456789012"

모든 시작 권한을 제거하려면

다음 예시는 지정한 AMI의 모든 공개 및 명시적 시작 권한을 제거합니다. AMI 소유자는 항상 시작 권한을 가지므로 이 명령의 영향을 받지 않아요.

Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission

더 알아보기 (Learn more)