v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔고 2023년 6월 1일에 지원을 종료했습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CDK 부트스트래핑 사용자 지정
AWS CDK 명령줄 인터페이스 (AWS CDK CLI) 를 사용하거나 AWS Cloud Development Kit (AWS CDK) 부트스트랩 템플릿을 수정 및 배포하여 부트스트래핑을 사용자 지정할 수 있습니다. AWS CloudFormation
부트스트래핑에 대한 소개는 를 참조하십시오. AWS CDK 부트스트래핑
를 사용하여 CDK CLI 부트스트래핑을 사용자 정의할 수 있습니다.
다음은 를 사용하여 부트스트래핑을 사용자 지정하는 방법에 대한 몇 가지 예입니다. CDK CLI cdk bootstrap
옵션 목록은 cdk bootstrap 섹션을 참조하세요.
- Amazon S3 버킷의 이름을 재정의합니다.
-
--bootstrap-bucket-name
옵션을 사용하여 기본 Amazon S3 버킷 이름을 재정의합니다. 이를 위해서는 템플릿 합성을 수정해야 할 수도 있습니다. 자세한 내용은 CDK 스택 합성 사용자 지정 단원을 참조하십시오. - Amazon S3 버킷의 서버 측 암호화 키를 수정합니다.
-
기본적으로 부트스트랩 스택의 Amazon S3 버킷은 서버 측 암호화에 AWS 관리 키를 사용하도록 구성됩니다. 기존 고객 관리형 키를 사용하려면
--bootstrap-kms-key-id
옵션을 사용하고 사용할 AWS Key Management Service (AWS KMS) 키 값을 제공하십시오. 암호화 키를 더 세밀하게--bootstrap-customer-key
제어하려면 고객 관리 키를 사용하도록 제공하십시오. - 에서 위임하는 배포 역할에 관리형 정책을 연결합니다. AWS CloudFormation
-
기본적으로 스택은 정책을 사용하여 전체 관리자 권한으로 배포됩니다.
AdministratorAccess
자체 관리형 정책을 사용하려면--cloudformation-execution-policies
옵션을 사용하고 배포 역할에 연결할 관리형 정책을 제공하십시오. ARNs정책을 여러 개 제공하려면 단일 문자열을 쉼표로 구분하여 전달하세요.
$
cdk bootstrap --cloudformation-execution-policies
"arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
배포 실패를 방지하려면 지정한 정책이 부트스트랩 중인 환경에서 수행할 모든 배포에 충분한지 확인하십시오.
- 부트스트랩 스택의 리소스 이름에 추가되는 한정자를 변경하십시오.
-
기본적으로
hnb659fds
한정자는 부트스트랩 스택에 있는 리소스의 물리적 ID에 추가됩니다. 이 값을 변경하려면 옵션을 사용하세요.--qualifier
이 수정은 이름 충돌을 방지하기 위해 동일한 환경에서 여러 부트스트랩 스택을 프로비저닝할 때 유용합니다.
한정자를 변경하는 것은 자체 자동 테스트 간에 이름을 분리하기 위한 것입니다. CDK CloudFormation 실행 역할에 부여된 IAM 권한의 범위를 매우 정확하게 좁힐 수 없다면 단일 계정에 두 개의 서로 다른 부트스트랩 스택을 보유해도 권한 격리에 따른 이점이 없습니다. 따라서 일반적으로 이 값을 변경할 필요가 없습니다.
한정자를 변경할 때 CDK 앱은 변경된 값을 스택 신시사이저에 전달해야 합니다. 자세한 내용은 CDK 스택 합성 사용자 지정 단원을 참조하십시오.
-
의
KEY=VALUE
형식의--tags
옵션을 사용하여 부트스트랩 스택에 CloudFormation 태그를 추가합니다. - 부트스트랩 중인 환경에 배포할 수 AWS 계정 있는 추가 항목을 지정하십시오.
-
--trust
옵션을 사용하여 부트스트랩 중인 환경에 배포할 수 AWS 계정 있는 추가 항목을 제공하십시오. 기본적으로 부트스트래핑을 수행하는 계정은 항상 신뢰할 수 있습니다.이 옵션은 다른 환경의 사용자가 배포할 환경을 부트스트래핑할 CDK Pipeline 때 유용합니다.
이 옵션을 사용할 때는 다음을 제공해야 합니다.
--cloudformation-execution-policies
신뢰할 수 있는 계정을 기존 부트스트랩 스택에 추가하려면 이전에 제공한 계정을 포함하여 신뢰할 수 있는 모든 계정을 지정해야 합니다. 신뢰할 수 있는 새 계정만 제공하는 경우 이전에 신뢰했던 계정은 제거됩니다.
다음은 두 계정을 신뢰하는 예시입니다.
$
cdk bootstrap
⏳ Bootstrapping environment aws://123456789012/us-west-2... Trusted accounts for deployment: 234567890123, 987654321098 Trusted accounts for lookup: (none) Execution policies: arn:aws:iam::aws:policy/AdministratorAccess CDKToolkit: creating CloudFormation changeset... ✅ Environment aws://123456789012/us-west-2 bootstrapped.aws://123456789012/us-west-2
--trust234567890123
--trust987654321098
--cloudformation-execution-policiesarn:aws:iam::aws:policy/AdministratorAccess
- 부트스트랩 중인 환경에서 정보를 조회할 수 AWS 계정 있는 추가 정보를 지정하십시오.
-
--trust-for-lookup
옵션을 사용하여 부트스트랩 중인 환경에서 컨텍스트 정보를 조회할 수 AWS 계정 있도록 지정합니다. 이 옵션은 스택을 직접 배포할 권한을 실제로 부여하지 않고도 환경에 배포될 스택을 합성할 수 있는 권한을 계정에 부여하는 데 유용합니다. - 부트스트랩 스택에 대한 종료 방지 기능을 활성화합니다.
-
부트스트랩 스택이 삭제되면 해당 환경에 원래 프로비저닝된 AWS 리소스도 삭제됩니다. 환경을 부트스트랩한 후에는 의도적으로 삭제한 경우가 아니라면 환경의 부트스트랩 스택을 삭제하고 다시 만들지 않는 것이 좋습니다. 대신 명령을 다시 실행하여 부트스트랩 스택을 새 버전으로 업데이트해 보세요.
cdk bootstrap
--termination-protection
옵션을 사용하여 부트스트랩 스택의 종료 보호 설정을 관리할 수 있습니다. 종료 보호를 활성화하면 부트스트랩 스택과 해당 리소스가 실수로 삭제되는 것을 방지할 수 있습니다. 실수로 부트스트랩 스택을 삭제한 경우 일반적인 복구 옵션이 CDK Pipelines 없으므로 사용하는 경우 특히 중요합니다.종료 보호를 활성화한 후 AWS CLI 또는 AWS CloudFormation 콘솔을 사용하여 확인할 수 있습니다.
종료 방지 기능을 활성화하려면
-
다음 명령을 실행하여 새 부트스트랩 스택 또는 기존 부트스트랩 스택에서 종료 보호를 활성화합니다.
$
cdk bootstrap --termination-protection
-
AWS CLI 또는 CloudFormation 콘솔을 사용하여 확인하십시오. 다음은 AWS CLI사용을 보여 주는 예제입니다. 부트스트랩 스택 이름을 수정한 경우 스택
CDKToolkit
이름으로 바꾸십시오.$
aws cloudformation describe-stacks --stack-name
" trueCDKToolkit
--query "Stacks[0].EnableTerminationProtection
-
기본 부트스트랩 템플릿 수정
제공할 CDK CLI 수 있는 것보다 더 많은 사용자 지정이 필요한 경우 필요에 따라 부트스트랩 템플릿을 수정할 수 있습니다. 그런 다음 템플릿을 배포하여 환경을 부트스트랩하세요.
기본 부트스트랩 템플릿을 수정 및 배포하려면
-
옵션을 사용하여 기본 부트스트랩 템플릿을 확보하십시오.
--show-template
기본적으로 CDK CLI 는 터미널 창에 템플릿을 출력합니다. 템플릿을 로컬 컴퓨터에 저장하도록 CDK CLI 명령을 수정할 수 있습니다. 다음은 그 예제입니다.$
cdk bootstrap --show-template
> my-bootstrap-template.yaml
-
필요에 따라 부트스트랩 템플릿을 수정합니다. 모든 변경 사항은 부트스트래핑 템플릿 계약을 준수해야 합니다. 부트스트래핑 템플릿 계약에 대한 자세한 내용은 을 참조하십시오. 부트스트랩 계약을 따르십시오.
나중에 기본 템플릿을
cdk bootstrap
사용하여 실행 중인 사용자가 실수로 사용자 정의를 덮어쓰지 않도록 템플릿 매개변수의 기본값을 변경하십시오.BootstrapVariant
에서는 CDK CLI 현재 배포된BootstrapVariant
템플릿과 동일하거나 더 높은 버전의 템플릿으로만 부트스트랩 스택을 덮어쓸 수 있습니다. -
원하는 AWS CloudFormation 배포 방법을 사용하여 수정된 템플릿을 배포하십시오. 다음은 를 사용하는 예제입니다 CDKCLI.
$
cdk bootstrap --template
my-bootstrap-template.yaml
부트스트랩 계약을 따르십시오.
CDK앱을 제대로 배포하려면 합성 중에 생성된 CloudFormation 템플릿에 부트스트래핑 중에 생성되는 리소스가 올바르게 지정되어야 합니다. 이러한 리소스를 일반적으로 부트스트랩 리소스라고 합니다. 부트스트래핑은 사용자 AWS 환경에서 배포를 수행하고 애플리케이션 자산을 관리하는 AWS CDK 데 사용되는 리소스를 생성합니다. Synthesis는 CloudFormation 애플리케이션의 각 CDK 스택에서 템플릿을 생성합니다. 이러한 템플릿은 애플리케이션에서 프로비저닝될 AWS 리소스를 정의하는 데 그치지 않습니다. 또한 배포 중에 사용할 부트스트랩 리소스를 지정합니다.
통합 중에는 AWS 환경이 어떻게 부트스트랩되었는지 구체적으로 알 수 CDK CLI 없습니다. 대신 에서는 사용자가 구성한 신디사이저를 기반으로 CloudFormation 템플릿을 CDK CLI 생성합니다. 따라서 부트스트래핑을 사용자 정의할 때 합성을 사용자 정의해야 할 수 있습니다. 합성 사용자 정의에 대한 지침은 을 참조하십시오. CDK 스택 합성 사용자 지정 목적은 합성된 CloudFormation 템플릿이 부트스트랩 환경과 호환되도록 하는 것입니다. 이러한 호환성을 부트스트랩 계약이라고 합니다.
스택 합성을 사용자 지정하는 가장 간단한 방법은 DefaultStackSynthesizer
인스턴스의 클래스를 수정하는 것입니다. Stack
이 클래스에서 제공할 수 있는 것 이상의 사용자 지정이 필요한 경우 자체 신시사이저를 구현 IStackSynthesizer
(아마도 에서 파생된) 클래스로 작성할 수 있습니다. DefaultStackSynthesizer
부트스트래핑을 커스터마이즈할 때는 부트스트랩 템플릿 계약에 따라 호환성을 유지하세요. DefaultStackSynthesizer
부트스트랩 템플릿 계약 이외의 방법으로 부트스트래핑을 수정하는 경우 자체 신디사이저를 작성해야 합니다.
버전 관리
부트스트랩 템플릿에는 잘 알려진 이름을 가진 Amazon EC2 Systems Manager (SSM) 파라미터를 생성할 수 있는 리소스와 템플릿의 버전을 반영하는 출력이 포함되어야 합니다.
Resources: CdkBootstrapVersion: Type: AWS::SSM::Parameter Properties: Type: String Name: Fn::Sub: '/cdk-bootstrap/${Qualifier}/version' Value: 4 Outputs: BootstrapVersion: Value: Fn::GetAtt: [CdkBootstrapVersion, Value]
역할
DefaultStackSynthesizer
에는 다섯 가지 목적을 위해 다섯 가지 IAM 역할이 필요합니다. 기본 역할을 사용하지 않는 경우 DefaultStackSynthesizer
개체 ARNs 내에서 IAM 역할을 지정해야 합니다. 역할은 다음과 같습니다.
-
CDKCLI와 는 환경에 AWS CodePipeline 배포하는 배포 역할을 맡습니다. 환경에 배포할 수 있는 사용자를
AssumeRolePolicy
제어합니다. 템플릿에서 이 역할에 필요한 권한을 확인할 수 있습니다. -
는 환경에서 컨텍스트 조회를 CDK CLI 수행하는 역할을 맡습니다. 환경에 배포할 수 있는 사용자를
AssumeRolePolicy
제어합니다. 이 역할에 필요한 권한은 템플릿에서 확인할 수 있습니다. -
및 AWS CodeBuild 프로젝트는 환경에 자산을 게시하는 파일 게시 CDK CLI 역할과 이미지 게시 역할을 맡습니다. 이들은 각각 Amazon S3 버킷과 Amazon ECR 리포지토리에 쓰는 데 사용됩니다. 이러한 역할에는 이러한 리소스에 대한 쓰기 액세스 권한이 필요합니다.
-
실제 배포를 수행하기 AWS CloudFormation 위해 AWS CloudFormation 실행 역할이 전달됩니다. 해당 권한은 배포가 실행될 권한입니다. 권한은 관리형 정책을 나열하는 파라미터로 스택에 ARNs 전달됩니다.
결과
를 CDK CLI 사용하려면 부트스트랩 스택에 다음과 같은 CloudFormation 출력이 있어야 합니다.
-
BucketName
— 파일 자산 버킷의 이름. -
BucketDomainName
— 도메인 이름 형식의 파일 자산 버킷. -
BootstrapVersion
— 부트스트랩 스택의 현재 버전.
템플릿 기록
부트스트랩 템플릿은 버전이 지정되며 시간이 지남에 따라 자체적으로 발전합니다. AWS CDK 자체 부트스트랩 템플릿을 제공하는 경우 표준 기본 템플릿을 사용하여 최신 상태로 유지하십시오. 템플릿이 모든 기능을 계속 사용할 수 있도록 하고 싶을 것입니다. CDK 자세한 내용은 부트스트랩 템플릿 버전 기록 단원을 참조하십시오.