Amazon EC2에서 사용할 수 있도록 AMI를 공개하기

Amazon EC2에서 사용할 수 있도록 AMI를 공개하기

AMI를 모든 AWS 계정과 공유하면 공개적으로 사용할 수 있게 만들 수 있어요. 이 절에서는 AMI를 공개로 전환하기 전에 고려할 사항과, 콘솔·AWS CLI·PowerShell로 공개하는 방법을 살펴볼게요.

출처: 문서

본문

AMI를 모든 AWS 계정과 공유하면 공개적으로 사용할 수 있게 만들 수 있어요.

AMI의 공개 공유를 막고 싶다면 block public access for AMIs를 활성화할 수 있어요. 이렇게 하면 AMI를 공개로 만드는 모든 시도를 차단해서, 권한 없는 접근과 AMI 데이터의 잠재적 오용을 막는 데 도움이 돼요. block public access를 활성화해도 이미 공개된 AMI에는 영향을 주지 않으며, 그 AMI들은 계속 공개 상태로 남아 있어요. 자세한 내용은 Understand block public access for AMIs를 참고하세요.

특정 계정만 AMI로 인스턴스를 시작하도록 허용하려면 Share an AMI with specific AWS accounts를 참고하세요.

고려 사항

AMI를 공개로 만들기 전에 다음을 고려하세요.

  • 소유권 – AMI를 공개로 만들려면 내 AWS 계정이 AMI를 소유해야 해요.
  • 리전 – AMI는 리전별 리소스예요. AMI를 공유하면 공유한 리전에서만 사용할 수 있어요. 다른 리전에서 사용할 수 있게 하려면 AMI를 그 리전으로 복사한 다음 공유하세요. 자세한 내용은 Copy an Amazon EC2 AMI를 참고하세요.
  • Block public access – AMI를 공개로 공유하려면 AMI가 공개 공유될 각 리전에서 block public access for AMIs가 비활성화되어 있어야 해요. AMI를 공개 공유한 후에는 block public access for AMIs를 다시 활성화해 AMI가 더 공개 공유되지 않도록 막을 수 있어요.
  • 공개할 수 없는 AMI도 있어요 – AMI에 다음 구성 요소 중 하나가 포함되면 공개로 만들 수 없어요(단, 특정 AWS 계정과 공유할 수는 있어요):
    • 암호화된 볼륨
    • 암호화된 볼륨의 스냅샷
    • 제품 코드(Product codes)
  • 민감한 데이터 노출 피하기 – AMI를 공유할 때 민감한 데이터를 노출하지 않으려면 Recommendations for creating shared Linux AMIs의 보안 고려 사항을 읽고 권장 작업을 따르세요.
  • 사용법 – AMI를 공유하면 사용자는 AMI에서만 인스턴스를 시작할 수 있어요. 삭제, 공유, 수정은 할 수 없어요. 하지만 내 AMI로 인스턴스를 시작한 후에는 그 시작한 인스턴스에서 AMI를 만들 수 있어요.
  • 자동 폐기 – 기본적으로 모든 공개 AMI의 폐기 날짜는 AMI 생성 날짜로부터 2년으로 설정돼요. 폐기 날짜를 2년보다 이르게 설정할 수 있어요. 폐기 날짜를 취소하거나 더 늦은 날짜로 옮기려면 특정 AWS 계정과만 공유해서 AMI를 개인으로 만들어야 해요.
  • 오래된 AMI 제거 – 공개 AMI가 폐기 날짜에 도달한 후 6개월 이상 그 AMI에서 새 인스턴스가 시작되지 않으면, AWS가 결국 공개 공유 속성을 제거해서 오래된 AMI가 공개 AMI 목록에 나타나지 않게 해요.
  • 과금 – 다른 AWS 계정이 내 AMI로 인스턴스를 시작해도 내가 과금되지는 않아요. AMI를 사용해 인스턴스를 시작한 계정이 자기가 시작한 인스턴스에 대해 과금돼요.

모든 AWS 계정과 AMI 공유(공개 공유)

AMI를 공개로 만든 후에는 콘솔의 Community AMIs에서 사용할 수 있어요. Community AMIs는 EC2 콘솔 왼쪽 탐색기의 AMI Catalog에서, 또는 콘솔로 인스턴스를 시작할 때 접근할 수 있어요. 참고로 AMI를 공개로 만든 후 Community AMIs에 나타나기까지는 잠시 시간이 걸릴 수 있어요.

Console(콘솔) —

AMI를 공개로 만들려면
  • Amazon EC2 콘솔을 https://console.aws.amazon.com/ec2/에서 엽니다.
  • 탐색 창에서 AMIs를 선택합니다.
  • 목록에서 AMI를 선택한 다음 Actions, Edit AMI permissions을 선택합니다.
  • AMI availability에서 Public을 선택합니다.
  • Save changes를 선택합니다.

AWS CLI —

각 AMI에는 소유자 외에 어떤 AWS 계정이 그 AMI로 인스턴스를 시작할 수 있는지 제어하는 launchPermission 속성이 있어요. AMI의 launchPermission 속성을 수정하면 AMI를 공개로 만들거나(모든 AWS 계정에 시작 권한 부여), 지정한 AWS 계정에만 공유할 수 있어요.

AMI에 시작 권한이 있는 계정 목록에서 계정 ID를 추가하거나 제거할 수 있어요. AMI를 공개로 만들려면 all 그룹을 지정하세요. 공개와 명시적 시작 권한을 모두 지정할 수 있어요.

AMI를 공개로 만들려면
  • modify-image-attribute 명령을 다음과 같이 사용해 지정한 AMI의 launchPermission 목록에 all 그룹을 추가합니다.
aws ec2 modify-image-attribute \
--image-id ami-0abcdef1234567890 \
--launch-permission "Add=[{Group=all}]"
aws ec2 describe-image-attribute \
--image-id ami-0abcdef1234567890 \
--attribute launchPermission
  • (선택 사항) AMI를 다시 개인으로 만들려면 시작 권한에서 all 그룹을 제거합니다. AMI 소유자는 항상 시작 권한을 가지므로 이 명령의 영향을 받지 않아요.
aws ec2 modify-image-attribute \
--image-id ami-0abcdef1234567890 \
--launch-permission "Remove=[{Group=all}]"

PowerShell —

각 AMI에는 소유자 외에 어떤 AWS 계정이 그 AMI로 인스턴스를 시작할 수 있는지 제어하는 launchPermission 속성이 있어요. AMI의 launchPermission 속성을 수정하면 AMI를 공개로 만들거나(모든 AWS 계정에 시작 권한 부여), 지정한 AWS 계정에만 공유할 수 있어요.

AMI에 시작 권한이 있는 계정 목록에서 계정 ID를 추가하거나 제거할 수 있어요. AMI를 공개로 만들려면 all 그룹을 지정하세요. 공개와 명시적 시작 권한을 모두 지정할 수 있어요.

AMI를 공개로 만들려면
  • Edit-EC2ImageAttribute 명령을 다음과 같이 사용해 지정한 AMI의 launchPermission 목록에 all 그룹을 추가합니다.
Edit-EC2ImageAttribute `
-ImageId ami-0abcdef1234567890 `
-Attribute launchPermission `
-OperationType add `
-UserGroup all
Get-EC2ImageAttribute `
-ImageId ami-0abcdef1234567890 `
-Attribute launchPermission
  • (선택 사항) AMI를 다시 개인으로 만들려면 시작 권한에서 all 그룹을 제거합니다. AMI 소유자는 항상 시작 권한을 가지므로 이 명령의 영향을 받지 않아요.
Edit-EC2ImageAttribute `
-ImageId ami-0abcdef1234567890 `
-Attribute launchPermission `
-OperationType remove `
-UserGroup all

더 알아보기