Systems Manager 파라미터로 AMI 참조하기
Systems Manager 파라미터로 AMI 참조하기 (Reference AMIs using Systems Manager parameters)
EC2 콘솔의 launch instance 위저드로 인스턴스를 시작할 때, AMI 목록에서 하나를 고르는 대신 AMI ID를 가리키는 AWS Systems Manager 파라미터를 선택할 수도 있어요. 자동화 코드로 인스턴스를 시작할 때도 AMI ID 대신 Systems Manager 파라미터를 지정하면 관리가 훨씬 편리해져요.
출처: 문서
본문
Systems Manager 파라미터는 Systems Manager Parameter Store에 만들 수 있는, 사용자가 정의한 키-값(key-value) 쌍이에요. Parameter Store는 애플리케이션 구성 값을 외부로 빼내 관리할 수 있는 중앙 저장소 역할을 해요. 자세한 내용은 AWS Systems Manager User Guide의 AWS Systems Manager Parameter Store를 참고하세요.
AMI ID를 가리키는 파라미터를 만들 때는 데이터 타입(data type)을 aws:ec2:image로 지정해야 해요. 이 데이터 타입을 지정하면 파라미터를 만들거나 수정할 때 파라미터 값이 AMI ID로 검증돼요. 자세한 내용은 AWS Systems Manager User Guide의 Amazon Machine Image ID에 대한 네이티브 파라미터 지원을 참고하세요.
사용 사례 (Use cases)
Systems Manager 파라미터로 AMI ID를 가리키면, 사용자가 인스턴스를 시작할 때 올바른 AMI를 더 쉽게 고를 수 있어요. 자동화 코드를 유지보수하는 일도 단순해지고요.
사용자에게 더 쉬움
인스턴스를 특정 AMI로 시작해야 하고 그 AMI가 주기적으로 갱신되는 상황이라면, 사용자에게 Systems Manager 파라미터를 선택해서 AMI를 찾도록 요구하는 걸 권장해요. 사용자가 Systems Manager 파라미터를 고르도록 하면 항상 최신 AMI로 인스턴스를 시작하게 돼요.
예를 들어 조직에서 매달 최신 운영체제와 애플리케이션 패치가 적용된 새 버전의 AMI를 만든다고 해볼게요. 사용자에게는 항상 최신 버전의 AMI로 인스턴스를 시작하도록 요구해야 하는 상황이에요. 이때 올바른 AMI ID를 가리키는 Systems Manager 파라미터(예: golden-ami)를 만들면 돼요. 새 버전의 AMI가 만들어질 때마다 파라미터의 AMI ID 값을 갱신해서 항상 최신 AMI를 가리키게 해요. 사용자는 AMI가 주기적으로 갱신된다는 걸 몰라도 돼요. 매번 같은 Systems Manager 파라미터만 고르면 되니까요. AMI에 Systems Manager 파라미터를 사용하면 인스턴스 시작에 올바른 AMI를 고르는 일이 훨씬 간단해져요.
자동화 코드 유지보수 단순화
자동화 코드로 인스턴스를 시작한다면, AMI ID 대신 Systems Manager 파라미터를 지정할 수 있어요. 새 버전의 AMI가 만들어지면 파라미터의 AMI ID 값을 바꿔서 최신 AMI를 가리키게 하면 되죠. 파라미터를 참조하는 자동화 코드는 AMI가 새로 나올 때마다 수정할 필요가 없어요. 이렇게 하면 자동화 유지보수가 단순해지고 배포 비용도 줄어들어요.
참고 Systems Manager 파라미터가 가리키는 AMI ID를 바꿔도 실행 중인 인스턴스에는 영향이 없어요.
권한 (Permissions)
launch instance 위저드에서 AMI ID를 가리키는 Systems Manager 파라미터를 사용하려면 IAM 정책에 다음 권한을 추가해야 해요.
ssm:DescribeParameters– Systems Manager 파라미터를 보고 선택할 권한을 부여해요.ssm:GetParameters– Systems Manager 파라미터의 값을 가져올 권한을 부여해요.
특정 Systems Manager 파라미터로만 접근을 제한할 수도 있어요. 자세한 내용과 IAM 정책 예시는 EC2 launch instance 위저드 사용 예시를 참고하세요.
제한 사항 (Limitations)
AMI와 Systems Manager 파라미터는 리전(Region)별로 구분돼요. 여러 리전에서 같은 Systems Manager 파라미터 이름을 사용하려면 각 리전에 같은 이름(예: golden-ami)의 파라미터를 만들어야 해요. 각 리전에서 파라미터는 그 리전에 있는 AMI를 가리키도록 해요.
파라미터 이름은 대소문자를 구분해요. 파라미터가 계층(hierarchy)의 일부일 때만 백슬래시가 필요해요. 예를 들어 /amis/production/golden-ami 같은 경우죠. 계층의 일부가 아니라면 백슬래시를 생략할 수 있어요.
Systems Manager 파라미터로 인스턴스 시작하기 (Launch an instance using a Systems Manager parameter)
인스턴스를 시작할 때 AMI ID 대신 AMI ID를 가리키는 Systems Manager 파라미터를 지정할 수 있어요.
파라미터를 프로그래밍 방식으로 지정할 때는 다음 구문을 사용해요. 여기서 resolve:ssm은 표준 접두사이고 parameter-name은 고유한 파라미터 이름이에요.
resolve:ssm:parameter-name
Systems Manager 파라미터는 버전을 지원해요. 파라미터가 갱신될 때마다 고유한 버전 번호가 부여돼요. 파라미터의 버전을 참조할 때는 다음과 같이 하면 되는데, version이 고유한 버전 번호예요. 버전을 지정하지 않으면 기본적으로 파라미터의 최신 버전이 사용돼요.
resolve:ssm:parameter-name:version
AWS가 제공하는 공개 파라미터로 인스턴스를 시작하려면 Systems Manager 공개 파라미터로 최신 AMI 참조하기를 참고하세요.
콘솔 (Console)
Systems Manager 파라미터를 사용해 AMI 찾기: Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다. 탐색 모음에서 인스턴스를 시작할 리전을 선택해요. 위치와 관계없이 사용 가능한 리전을 아무거나 고를 수 있어요. 콘솔 대시보드에서 Launch instance를 선택해요. Application and OS Images (Amazon Machine Image) 아래에서 Browse more AMIs를 선택해요. 검색 창 오른쪽의 화살표 버튼을 선택한 다음 Search by Systems Manager parameter를 선택해요. Systems Manager parameter에서 파라미터를 선택해요. 파라미터에 해당하는 AMI ID가 Currently resolves to 아래에 나타나요. Search를 선택해요. AMI ID와 일치하는 AMI가 목록에 나타나요. 목록에서 AMI를 선택하고 Select를 선택해요. launch instance 위저드로 인스턴스를 시작하는 방법에 대한 자세한 내용은 콘솔에서 launch instance 위저드를 사용해 EC2 인스턴스 시작하기를 참고하세요.
AWS CLI
Systems Manager 파라미터를 사용해 인스턴스 시작하기: --image-id 옵션과 함께 run-instances 명령을 사용해요. 이 예시는 AMI ID를 지정하는 golden-ami라는 Systems Manager 파라미터를 사용해요.
--image-id resolve:ssm:/golden-ami
Systems Manager 파라미터의 버전을 만들 수 있어요. 다음 예시는 golden-ami 파라미터의 버전 2를 지정해요.
--image-id resolve:ssm:/golden-ami:2
PowerShell
Systems Manager 파라미터를 사용해 인스턴스 시작하기: -ImageId 파라미터와 함께 New-EC2Instance cmdlet을 사용해요. 이 예시는 AMI ID를 지정하는 golden-ami라는 Systems Manager 파라미터를 사용해요.
-ImageId "resolve:ssm:/golden-ami"
Systems Manager 파라미터의 버전을 만들 수 있어요. 다음 예시는 golden-ami 파라미터의 버전 2를 지정해요.
-ImageId "resolve:ssm:/golden-ami:2"