CDK AWS v2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CDK 블루프린트를 사용하여 구문 구성
참고
CDK 블루프린트는 평가판 릴리스이며 변경될 수 있습니다.
AWS CDK 블루프린트를 사용하여 조직 전체에 L2 구성 구성을 표준화하고 배포합니다. 블루프린트를 사용하면 AWS 리소스가 조직 표준 및 모범 사례에 따라 일관되게 구성되도록 할 수 있습니다. 예를 들어 모든 Amazon S3 버킷에 대해 암호화를 자동으로 활성화하거나, 모든 AWS Lambda 함수에 특정 로깅 구성을 적용하거나, 모든 보안 그룹에 표준 보안 규칙을 적용할 수 있습니다.
블루프린트는 인스턴스화 시 구문 속성을 수정할 수 있도록 AWS CDK v2.196.0
블루프린트는 규정 준수 적용 메커니즘이 아닙니다. 개발자는 필요한 경우 기본값을 재정의할 수 있습니다. 엄격한 규정 준수를 위해 블루프린트 외에도 AWS CloudFormation Guard, 서비스 제어 정책 또는 CDK 측면을 사용하는 것이 좋습니다.
자세한 구현 정보는 속성 주입 RFC
블루프린트의 주요 구성 요소
블루프린트는 인스턴스화될 때 구문에 기본 속성을 적용하는 속성 인젝터 모음입니다. 속성 인젝터는 IPropertyInjector
인터페이스를 구현하는 구성 요소로, 구문 생성을 가로채고 구문이 생성되기 전에 속성을 수정하거나 추가합니다.
-
IPropertyInjector -는 props에 지정되지 않은 추가 속성을 주입하는 방법을
IPropertyInjector
정의합니다. 이는 하나의 L2 구문에 고유하며 해당 구문의 속성에서 작동합니다. -
PropertyInjectors - 구문 트리에 연결된 인젝터 모음
PropertyInjectors
입니다. 주입기는 모든 구문에 연결할 수 있지만 실제로는 대부분의 주입기가App
,Stage
또는에 연결될 것으로 예상됩니다Stack
.
블루프린트의 일반적인 사용 사례
CDK 블루프린트를 사용하여 AWS 리소스의 여러 측면을 표준화할 수 있습니다. 다음은 몇 가지 일반적인 사용 사례입니다.
- 보안 표준
-
-
모든 Amazon S3 버킷에 서버 측 암호화가 활성화되어 있는지 확인합니다.
-
기본적으로 퍼블릭 액세스를 차단하도록 모든 보안 그룹을 구성합니다.
-
AWS Lambda 함수에 최소 권한 AWS Identity and Access Management(IAM) 권한을 적용합니다.
-
모든 네트워크 통신에 SSL을 적용합니다.
-
- 운영 우수성
-
-
모든 AWS Lambda 함수에 대해 표준화된 로깅을 구성합니다.
-
리소스에 일관된 태그 지정 전략을 적용합니다.
-
기본 모니터링 및 알림 임계값을 설정합니다.
-
로그 및 백업에 대한 표준 보존 정책을 구현합니다.
-
- 비용 최적화
-
-
환경에 따라 적절한 인스턴스 크기를 구성합니다.
-
조직 기본값을 사용하여 Auto Scaling 정책을 적용합니다.
-
Amazon S3 버킷의 수명 주기 규칙을 설정하여 객체를 더 저렴한 스토리지 클래스로 전환합니다.
-
데이터베이스에 대한 기본 프로비저닝 처리량을 구성합니다.
-
- 규정 준수 요구 사항
-
-
규제 대상 데이터에 필요한 암호화 설정을 구현합니다.
-
데이터 보존 요구 사항에 필요한 백업 정책을 적용합니다.
-
보안 요구 사항을 충족하는 기본 Amazon VPC 설정을 구성합니다.
-
리소스에 비용 할당에 필요한 태그가 있는지 확인합니다.
-
- 개발자 생산성
-
-
표준 문안 코드의 필요성을 줄이는 합리적인 기본값을 제공합니다.
-
내장 인젝터를 사용하여 조직별 스택 클래스를 생성합니다.
-
재사용 가능한 인젝터를 통해 팀 간에 모범 사례를 공유합니다.
-
코드에 대한 조직 지식을 인코딩하여 온보딩을 간소화합니다.
-
블루프린트 시작하기
다음은 속성 인젝터를 생성하고 사용하는 방법에 대한 간단한 예입니다.
먼저 Amazon S3 버킷에 대한 속성 인젝터를 생성합니다.
import { IPropertyInjector, InjectionContext } from 'aws-cdk-lib'; import { Bucket, BucketProps, BlockPublicAccess } from 'aws-cdk-lib/aws-s3'; export class SecureBucketDefaults implements IPropertyInjector { public readonly constructUniqueId: string; constructor() { this.constructUniqueId = Bucket.PROPERTY_INJECTION_ID; } public inject(originalProps: BucketProps, _context: InjectionContext): BucketProps { return { // Set security defaults blockPublicAccess: BlockPublicAccess.BLOCK_ALL, enforceSSL: true, // Include original props to allow overrides ...originalProps, }; } }
그런 다음 CDK 애플리케이션에서 인젝터를 사용합니다.
import { App, Stack } from 'aws-cdk-lib'; import { Bucket } from 'aws-cdk-lib/aws-s3'; import { SecureBucketDefaults } from './secure-bucket-defaults'; // Attach injectors when creating the App const app = new App({ propertyInjectors: [new SecureBucketDefaults()] }); const stack = new Stack(app, 'MyStack'); // This bucket automatically gets the default properties const myBucket = new Bucket(stack, 'MyBucket');
또는 메서드를 사용할 수 있습니다PropertyInjectors.of()
.
import { App, Stack, PropertyInjectors } from 'aws-cdk-lib'; import { SecureBucketDefaults } from './secure-bucket-defaults'; const app = new App(); PropertyInjectors.of(app).add(new SecureBucketDefaults()); const stack = new Stack(app, 'MyStack'); const myBucket = new Bucket(stack, 'MyBucket');
모범 사례
-
재정의
…originalProps
가 허용되도록 기본 속성을 앞에 배치합니다. -
강제 속성을 뒤에 배치
…originalProps
하여 재정의를 방지합니다. -
리소스를 생성할 때 건너뛰기 플래그를 사용하여 무한 재귀를 방지합니다. 예를 들어 속성 주입 RFC에서 버킷에 대한 accessLogBucket을 생성해야 하는 경우 어떻게 되나요?
를 참조하세요. -
디버깅을 위한 로깅을 추가합니다.
-
CDK 컨텍스트를 사용하여 테스트를 위해 인젝터를 활성화/비활성화합니다.
구현 세부 정보, 문제 해결 팁 및 참조 정보를 포함하여 속성 주입에 대한 자세한 내용은 속성 주입 RFC