AWS CDK 부트스트래핑 사용자 지정 - AWS Cloud Development Kit (AWS CDK) v2

AWS CDK v2 개발자 안내서입니다. 구형 CDK v1은 2022년 6월 1일에 유지 보수에 들어갔고 2023년 6월 1일에 지원이 종료되었습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS CDK 부트스트래핑 사용자 지정

AWS CDK 명령줄 인터페이스 (AWS CDK CLI) 를 사용하거나 AWS Cloud Development Kit (AWS CDK) 부트스트랩 템플릿을 수정 및 배포하여 부트스트래핑을 사용자 지정할 수 있습니다. AWS CloudFormation

부트스트래핑에 대한 소개는 를 참조하십시오. 부트스트래핑

CLICDK를 사용하여 부트스트래핑을 사용자 지정하세요.

다음은 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 옵션을 사용하고 배포 역할에 연결할 관리형 정책의 ARN을 제공하십시오.

정책을 여러 개 제공하려면 단일 문자열을 쉼표로 구분하여 전달하세요.

$ 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 계정 있는 추가 항목을 제공하십시오. 기본적으로 부트스트래핑을 수행하는 계정은 항상 신뢰할 수 있습니다.

이 옵션은 다른 환경의 Pipeline CDK를 배포할 환경을 부트스트래핑할 때 유용합니다.

이 옵션을 사용할 때는 다음을 제공해야 합니다. --cloudformation-execution-policies

신뢰할 수 있는 계정을 기존 부트스트랩 스택에 추가하려면 이전에 제공한 계정을 포함하여 신뢰할 수 있는 모든 계정을 지정해야 합니다. 신뢰할 수 있는 새 계정만 제공하는 경우 이전에 신뢰했던 계정은 제거됩니다.

다음은 두 계정을 신뢰하는 예입니다.

$ cdk bootstrap aws://123456789012/us-west-2 --trust 234567890123 --trust 987654321098 --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess ⏳ 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 계정 있는 추가 정보를 지정하십시오.

--trust-for-lookup옵션을 사용하여 부트스트랩 중인 환경에서 컨텍스트 정보를 조회할 수 AWS 계정 있도록 지정합니다. 이 옵션은 스택을 직접 배포할 권한을 실제로 부여하지 않고도 환경에 배포될 스택을 합성할 수 있는 권한을 계정에 부여하는 데 유용합니다.

부트스트랩 스택에 대한 종료 방지 기능을 활성화합니다.

부트스트랩 스택이 삭제되면 해당 환경에 원래 프로비저닝된 AWS 리소스도 삭제됩니다. 환경을 부트스트랩한 후에는 의도적으로 삭제한 경우가 아니라면 환경의 부트스트랩 스택을 삭제하고 다시 만들지 않는 것이 좋습니다. 대신 명령을 다시 실행하여 부트스트랩 스택을 새 버전으로 업데이트해 보세요. cdk bootstrap

--termination-protection옵션을 사용하여 부트스트랩 스택의 종료 보호 설정을 관리할 수 있습니다. 종료 보호를 활성화하면 부트스트랩 스택과 해당 리소스가 실수로 삭제되는 것을 방지할 수 있습니다. CDK를 사용하는 경우 특히 중요합니다. 실수로 부트스트랩 스택을 삭제한 경우 일반적인 복구 옵션이 없기 Pipelines 때문입니다.

종료 보호를 활성화한 후에는 AWS CLI 또는 AWS CloudFormation 콘솔을 사용하여 확인할 수 있습니다.

종료 보호를 활성화하려면
  1. 다음 명령을 실행하여 새 부트스트랩 스택 또는 기존 부트스트랩 스택에서 종료 보호를 활성화합니다.

    $ cdk bootstrap --termination-protection
  2. AWS CLI 또는 CloudFormation 콘솔을 사용하여 확인하십시오. 다음은 AWS CLI사용을 보여 주는 예제입니다. 부트스트랩 스택 이름을 수정한 경우 스택 CDKToolkit 이름으로 바꾸십시오.

    $ aws cloudformation describe-stacks --stack-name CDKToolkit --query "Stacks[0].EnableTerminationProtection" true

기본 부트스트랩 템플릿 수정

CDK가 제공할 CLI 수 있는 것보다 더 많은 사용자 지정이 필요한 경우 필요에 따라 부트스트랩 템플릿을 수정할 수 있습니다. 그런 다음 템플릿을 배포하여 환경을 부트스트랩하세요.

기본 부트스트랩 템플릿을 수정 및 배포하려면
  1. 옵션을 사용하여 기본 부트스트랩 템플릿을 확보하십시오. --show-template 기본적으로 CLI CDK는 터미널 창에 템플릿을 출력합니다. 템플릿을 로컬 컴퓨터에 저장하도록 CDK CLI 명령을 수정할 수 있습니다. 다음은 그 예제입니다.

    $ cdk bootstrap --show-template > my-bootstrap-template.yaml
  2. 필요에 따라 부트스트랩 템플릿을 수정합니다. 모든 변경 사항은 부트스트래핑 템플릿 계약을 준수해야 합니다. 부트스트래핑 템플릿 계약에 대한 자세한 내용은 을 참조하십시오. 부트스트랩 템플릿 계약을 따르십시오.

    나중에 기본 템플릿을 cdk bootstrap 사용하여 실행 중인 사용자가 실수로 사용자 정의를 덮어쓰는 일이 없도록 템플릿 매개변수의 기본값을 변경하십시오. BootstrapVariant CLICDK에서는 현재 배포된 BootstrapVariant 템플릿과 동일하거나 더 높은 버전의 템플릿으로만 부트스트랩 스택을 덮어쓸 수 있습니다.

  3. 원하는 AWS CloudFormation 배포 방법을 사용하여 수정된 템플릿을 배포하십시오. 다음은 CLI CDK를 사용하는 예제입니다.

    $ cdk bootstrap --template my-bootstrap-template.yaml

부트스트랩 템플릿 계약을 따르십시오.

부트스트래핑을 사용자 지정할 때 스택 합성 동작을 사용자 지정해야 할 수 있습니다. 이렇게 하면 합성된 CloudFormation 템플릿이 부트스트랩 스택과 호환성을 유지할 수 있습니다. 자세한 정보는 CDK 스택 합성을 사용자 지정하세요.을 참조하세요.

스택 합성을 사용자 지정하는 가장 간단한 방법은 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에는 다섯 가지 용도를 위한 5개의 IAM 역할이 필요합니다. 기본 역할을 사용하지 않는 경우 객체 내에 IAM 역할 ARN을 지정해야 합니다. DefaultStackSynthesizer 역할은 다음과 같습니다.

  • 배포 역할은 CLI CDK와 B가 맡아 AWS CodePipeline 환경에 배포합니다. 환경에 배포할 수 있는 사용자를 AssumeRolePolicy 제어합니다. 템플릿에서 이 역할에 필요한 권한을 확인할 수 있습니다.

  • CDK는 환경에서 컨텍스트 조회를 CLI 수행하는 조회 역할을 맡습니다. 환경에 배포할 수 있는 사용자를 AssumeRolePolicy 제어합니다. 이 역할에 필요한 권한은 템플릿에서 확인할 수 있습니다.

  • CDK와 AWS CodeBuild 프로젝트는 환경에 자산을 게시하는 파일 게시 CLI 역할과 이미지 게시 역할을 맡습니다. 이들은 각각 Amazon S3 버킷과 Amazon ECR 리포지토리에 쓰는 데 사용됩니다. 이러한 역할에는 이러한 리소스에 대한 쓰기 액세스 권한이 필요합니다.

  • 실제 배포를 수행하기 AWS CloudFormation 위해 AWS CloudFormation 실행 역할이 전달됩니다. 해당 권한은 배포가 실행될 권한입니다. 권한은 관리형 정책 ARN을 나열하는 파라미터로 스택에 전달됩니다.

결과

CDK를 CLI 사용하려면 부트스트랩 스택에 다음과 같은 CloudFormation 출력이 있어야 합니다.

  • BucketName— 파일 자산 버킷의 이름.

  • BucketDomainName— 도메인 이름 형식의 파일 자산 버킷.

  • BootstrapVersion— 부트스트랩 스택의 현재 버전.

템플릿 기록

부트스트랩 템플릿은 버전이 지정되며 시간이 지남에 따라 자체적으로 발전합니다. AWS CDK 자체 부트스트랩 템플릿을 제공하는 경우 표준 기본 템플릿을 사용하여 최신 상태로 유지하십시오. 템플릿이 모든 CDK 기능과 계속 호환되는지 확인하고 싶을 것입니다. 자세한 내용은 부트스트랩 템플릿 버전 기록을(를) 참조하세요.