v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CDK 사용 데이터 보고란 무엇입니까?
AWS Cloud Development Kit (AWS CDK) 애플리케이션은 사용 데이터를 수집하고 보고하여 AWS CDK 가 사용되는 방식에 대한 통찰력을 얻도록 구성됩니다. CDK 팀은이 데이터를 사용하여 다음을 수행합니다.
-
고객과 소통 - 알려진 보안 또는 안정성 문제가 있는 구문을 사용하여 스택을 식별하고 고객에게 영향을 미치는 주제에 대한 통신을 전송합니다.
-
CDK 개발 정보 제공 - CDK 사용에 대한 인사이트를 얻어 CDK 개발에 더 나은 정보를 제공합니다.
-
CDK 문제 조사 - 버그가 보고되면 사용 데이터는 문제 해결 시 CDK 팀에 귀중한 통찰력을 제공합니다.
어떤 사용 데이터가 수집되나요?
CDK에서 수집하는 사용 데이터에는 두 가지 범주가 있습니다.
-
일반 사용 데이터
-
추가 사용 데이터
일반 사용 데이터 수집
CDK는 CDK 애플리케이션에서 다음과 같은 유형의 일반 사용 데이터를 수집합니다.
-
사용된 CDK 라이브러리 버전입니다.
-
다음
NPM
모듈에서 사용되는 구문의 이름입니다.-
AWS CDK 코어 모듈
-
AWS Construct Library 모듈
-
AWS 솔루션 구성 모듈
-
AWS Render Farm 배포 키트 모듈
-
참고
버전 1.93.0 이전에는 스택에 사용된 구문 대신 합성 중에 로드된 모듈의 이름과 버전을 AWS CDK 보고했습니다.
추가 사용 데이터 수집
CDK 버전 2.178.0부터 사용 데이터 수집이 확장되어 다음과 같은 추가 사용 데이터가 포함됩니다.
-
CDK 정의 속성 키 - L2 구문의 기본 제공 속성을 사용하면 속성 키가 수집됩니다. 여기에는 사전 객체에 중첩된 기본 제공 속성 키가 포함됩니다.
-
CDK 정의 속성 키의 부울 및 열거형 속성 값 - CDK 정의 속성 키의 경우 부울 및 열거형 유형의 속성 값만 수집됩니다. 문자열 값 또는 구문 참조와 같은 다른 모든 유형은 수정됩니다.
-
부울 및 열거형 유형의 메서드 이름, 키 및 속성 값 - L2 구문 메서드를 사용하면 부울 및 열거형 유형의 메서드 이름, 속성 키 및 속성 값을 수집합니다.
고유하게 생성한 속성 키 및 값의 경우 전체 객체가 수정됩니다. 예를 들어 InlineApiDefinition
를 사용하여 OpenAPI 사양을 정의하고 RestApi
구문으로 전달하면 전체 InlineApiDefinition
객체가 수정됩니다.
이점 및 잠재적 우려 사항을 포함하여 추가 사용 데이터 수집에 대한 자세한 내용은 aws-cdk 리포지토리의 CDK 추가 메타데이터 수집(특성 플래그 아래) #33198
CDK가 사용 데이터를 수집하는 방법
합성 시 CDK는 애플리케이션에서 사용량 데이터를 수집하여 AWS::CDK::Metadata
리소스 내에 저장합니다. 다음은 합성된 AWS CloudFormation 템플릿에 대한 예제입니다.
CDKMetadata:
Type: "AWS::CDK::Metadata"
Properties:
Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="
Analytics
속성은 스택에 있는 구문의 gzip으로 압축되고, base64로 인코딩되고, 접두사로 인코딩된 목록입니다.
사용량 데이터 보고를 옵트아웃하거나 옵트인하는 방법
일반 사용 데이터 보고 및 추가 사용 데이터 보고를 옵트아웃하거나 옵트인하는 옵션은 원래 앱을 생성하는 데 사용한 CDK 버전에 따라 다릅니다.
기본적으로 CDK 애플리케이션은 다음과 같이 사용량 데이터 보고를 자동으로 옵트인하도록 구성됩니다.
-
모든 CDK 앱 - 일반 사용 데이터 보고에 옵트인됩니다.
-
v2.178.0 이전 버전으로 생성된 CDK 앱 - 추가 사용 데이터 보고에 자동으로 옵트인되지 않습니다.
-
v2.178.0 이상으로 생성된 CDK 앱 - 추가 사용 데이터 보고에 옵트인되었습니다.
주의
옵트아웃을 선택하면 CDK는 보안 문제의 영향을 받았는지 여부를 식별할 수 없으며 이에 대한 알림을 보내지 않습니다.
모든 사용 데이터 보고 옵트아웃
모든 사용 데이터 보고를 옵트아웃하려면 AWS Cloud Development Kit (AWS CDK) 명령줄 인터페이스(CLI)를 사용하거나 프로젝트 cdk.json
파일을 구성할 수 있습니다.
CDK를 사용하여 모든 사용 데이터 보고를 옵트아웃하려면CLI
-
CDK CLI 명령과 함께
--no-version-reporting
옵션을 사용하여 단일 명령에 대해 옵트아웃합니다. 다음은 템플릿 합성 중 옵트아웃하는 예입니다.$
cdk synth --no-version-reporting
CDK는를 실행할 때 템플릿을 자동으로 합성하므로
cdk deploy
명령과--no-version-reporting
함께를 사용해야cdk deploy
합니다.
cdk.json
파일을 구성하여 모든 사용 데이터 보고를 옵트아웃하려면
-
./cdk.json
또는~/.cdk.json
에서versionReporting
을false
로 설정합니다. 이렇게 하면 기본적으로 옵트아웃됩니다. 다음은 예제입니다.{ "app": "...", "versionReporting": false }
-
구성한 후에는 개별 명령에
--version-reporting
을 지정하여 이 동작을 재정의하고 옵트인할 수 있습니다.
추가 사용 데이터 보고만 옵트아웃
CDK 앱이 2.178.0보다 오래된 CDK 버전으로 생성된 경우 일반 사용 데이터 보고를 옵트인하더라도 추가 사용 데이터 보고를 자동으로 옵트아웃합니다. 추가 사용 데이터 보고를 옵트아웃하기 위해 아무 조치도 취할 필요가 없습니다.
CDK 앱이 CDK 버전 2.178.0 이상으로 생성된 경우 모든 사용 데이터 보고를 옵트아웃해야 합니다. 추가 사용 데이터 보고만 옵트아웃할 수 없습니다.
사용량 데이터 보고 옵트인
CDK 앱이 CDK 버전 2.178.0 이상으로 생성된 경우를 로 설정하여 모든 사용 데이터 보고를 옵트인versionReporting
할 수 있습니다true
. CDK 앱의 기본 동작입니다.
CDK 앱이 2.178.0보다 오래된 CDK 버전으로 생성된 경우를 로 설정하여 일반 사용 데이터 보고를 옵트인versionReporting
할 수 있습니다true
. 추가 사용 데이터 보고를 옵트인하려면 기능 플래그를 활성화해야 합니다.
추가 사용 데이터 보고를 옵트인하려면
참고
이 단계는 원래 2.178.0 이전 버전으로 생성된 CDK 앱용입니다.
-
현재 CDK 버전 2.178.0 이상을 사용하고 있는지 확인합니다.
-
CDK 구성 파일에서를
@aws-cdk/core:enableAdditionalMetadataCollection
로 지정합니다true
. 다음은 예제입니다.{ "context": { "@aws-cdk/core:enableAdditionalMetadataCollection": "true" } }
-
FeatureFlags
클래스와 함께ENABLE_ADDITIONAL_METADATA_COLLECTION
값을 사용할 수도 있습니다. 다음은 예제입니다.import * as cdk from 'aws-cdk-lib'; import { FeatureFlags } from 'aws-cdk-lib'; import * as cx_api from 'aws-cdk-lib/cx-api'; import { Construct } from 'constructs'; export class MyStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Set the feature flag ENABLE_ADDITIONAL_METADATA_COLLECTION to true FeatureFlags.of(this).add(cx_api.ENABLE_ADDITIONAL_METADATA_COLLECTION, true); // Your stack resources go here new cdk.aws_s3.Bucket(this, 'MyBucket'); } } const app = new cdk.App(); new MyStack(app, 'MyStack');
예시
CDK 애플리케이션에서 수집된 일반 및 추가 사용 데이터
다음은 CDK 앱의 예입니다.
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
// Create an S3 bucket (L2 construct)
const myBucket = new s3.Bucket(this, 'MyBucket', {
bucketName: 'my-cdk-example-bucket', // String type
versioned: true, // Boolean type
removalPolicy: cdk.RemovalPolicy.DESTROY, // ENUM type
lifecycleRules: [{ // Array of object type
expirationDate: new Date('2019-10-01'),
objectSizeLessThan: 600,
objectSizeGreaterThan: 500,
}],
});
// Use a method of the L2 construct to define additional properties
myBucket.addLifecycleRule({
id: 'ExpireOldObjects',
enabled: true, // Boolean
expiration: cdk.Duration.days(90), // Expire objects after 90 days
});
}
}
// Define the CDK app and stack
const app = new cdk.App();
new MyStack(app, 'MyStack');
app.synth();
합성 시 사용량 데이터가 수집, 압축 및 AWS::CDK::Metadata
리소스에 저장됩니다.
다음은 2.178.0 이전의 CDK 버전으로 수집된 일반 사용 데이터의 예입니다.
{
"fqn": "aws-cdk-lib.aws-s3.Bucket",
"version": "v2.170.0"
}
다음은 CDK 버전 2.178.0에 도입된 추가 사용 데이터를 포함하여 수집된 사용 데이터의 예입니다.
{
"fqn": "aws-cdk-lib.aws_s3.Bucket",
"version": "2.170.0",
"metadata": [
{
"type": "aws:cdk:analytics:construct",
"data": {
"bucketName": "*",
"versioned": true,
"removalPolicy": "cdk.RemovalPolicy.DESTROY",
"lifecycleRules": [
{
"expirationDate": "*",
"objectSizeLessThan": "*",
"objectSizeGreaterThan": "*"
}
]
}
},
{
"type": "aws:cdk:analytics:method",
"data": {
"name": "addLifecycleRule",
"prop": {
"id": "*",
"enabled": true,
"expiration": "*",
}
}
}
]
}