v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Cloud Development Kit (AWS CDK) 앱을 빌드할 때 다양한 유형의 식별자와 이름을 사용합니다. 를 AWS CDK 효과적으로 사용하고 오류를 방지하려면 식별자 유형을 이해하는 것이 중요합니다.
식별자는 생성된 범위 내에서 고유해야 합니다. AWS CDK 애플리케이션에서 전역적으로 고유할 필요는 없습니다.
동일한 범위 내에서 동일한 값을 가진 식별자를 생성하려고 하면에서 예외가 AWS CDK 발생합니다.
구문 ID
가장 일반적인 식별자인 id
는 구문 객체를 인스턴스화할 때 두 번째 인수로 전달되는 식별자입니다. 이 식별자는 모든 식별자와 마찬가지로 구문 객체를 인스턴스화할 때 첫 번째 인수인 생성 범위 내에서만 고유하면 됩니다.
참고
스택의 id
도 AWS CDK참조CLI에서 참조하는 데 사용하는 식별자입니다.
앱에 식별자가 MyBucket
인 2개의 구문이 있는 예를 살펴보겠습니다. 첫 번째는 식별자가 Stack1
인 스택의 범위에 정의됩니다. 두 번째는 식별자가 Stack2
인 스택의 범위에 정의됩니다. 서로 다른 범위로 정의되므로 충돌이 발생하지 않으며 문제 없이 동일한 앱에서 공존할 수 있습니다.
import { App, Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
class MyStack extends Stack {
constructor(scope: Construct, id: string, props: StackProps = {}) {
super(scope, id, props);
new s3.Bucket(this, 'MyBucket');
}
}
const app = new App();
new MyStack(app, 'Stack1');
new MyStack(app, 'Stack2');
경로
AWS CDK 애플리케이션의 구문은 App
클래스에 기반을 둔 계층 구조를 형성합니다. 지정된 구문, 부모 구문, 조부모 구문 등부터 구문 트리의 루트까지의 ID 컬렉션을 경로라고 합니다.
는 AWS CDK 일반적으로 템플릿의 경로를 문자열로 표시합니다. 레벨의 ID는 일반적으로 스택인 루트 App
인스턴스 바로 아래의 노드에서 시작하는 슬래시로 구분됩니다. 예를 들어 이전 코드 예제에서 두 Amazon S3 버킷 리소스의 경로는 Stack1/MyBucket
및 Stack2/MyBucket
입니다.
다음 예와 같이 프로그래밍 방식으로 모든 구문의 경로에 액세스할 수 있습니다. 이는 myConstruct
또는 my_construct
(Python 개발자가 작성)의 경로를 가져옵니다. IDs는 생성된 범위 내에서 고유해야 하므로 AWS CDK 애플리케이션 내에서 경로는 항상 고유합니다.
const path: string = myConstruct.node.path;
고유 ID
AWS CloudFormation 에서는 템플릿의 모든 논리적 IDs가 고유해야 합니다. 따라서는 애플리케이션의 각 구문에 대해 고유 식별자를 생성할 수 있어야 AWS CDK 합니다. 리소스에는 전역적으로 고유한 경로(스택에서 특정 리소스까지의 모든 범위 이름)가 있습니다. 따라서는 경로의 요소를 연결하고 8자리 해시를 추가하여 필요한 고유 식별자를 AWS CDK 생성합니다. (해시는 A/B/C
및와 같이 동일한 AWS CloudFormation 식별자를 생성하는 고유한 경로를 구분A/BC
하는 데 필요합니다. AWS CloudFormation 식별자는 영숫자이며 슬래시 또는 기타 구분 문자를 포함할 수 없습니다.) 는이 문자열을 구문의 고유 ID로 AWS CDK 호출합니다.
일반적으로 AWS CDK 앱은 고유 IDs에 대해 알 필요가 없습니다. 그러나 다음 예와 같이 프로그래밍 방식으로 모든 구문의 고유 ID에 액세스할 수 있습니다.
const uid: string = Names.uniqueId(myConstruct);
주소는 CDK 리소스를 고유하게 구분하는 또 다른 종류의 고유 식별자입니다. 경로의 SHA-1 해시에서 파생되어 사람이 읽을 수 없습니다. 그러나 길이가 일정하고 비교적 짧기 때문에(항상 42개의 16진수 문자) ’전통적’ 고유 ID가 너무 길 수 있는 상황에서 유용합니다. 일부 구문은 고유 ID 대신 합성된 AWS CloudFormation 템플릿의 주소를 사용할 수 있습니다. 다시 말해, 앱은 일반적으로 해당 구문의 주소를 알 필요가 없지만 다음과 같이 구문의 주소를 검색할 수 있습니다.
const addr: string = myConstruct.node.addr;
논리적 ID
고유 IDs 리소스를 나타내는 구문에 대해 생성된 AWS CloudFormation 템플릿에서 AWS 리소스의 논리적 식별자(또는 논리적 이름) 역할을 합니다.
예를 들어, 이전 예의 Amazon S3 버킷은 Stack2
내에서 생성되면 AWS::S3::Bucket
리소스가 생성됩니다. 리소스의 논리적 ID가 결과 AWS CloudFormation 템플릿Stack2MyBucket4DD88B4F
에 있습니다. 이 식별자를 생성하는 방법에 대한 자세한 내용은 고유 ID 섹션을 참조하세요.
논리적 ID 안정성
리소스가 생성된 후에는 리소스의 논리적 ID를 변경하지 마세요.는 논리적 ID로 리소스를 AWS CloudFormation 식별합니다. 따라서 리소스의 논리적 ID를 변경하면는 새 논리적 ID를 사용하여 새 리소스를 AWS CloudFormation 생성한 다음 기존 리소스를 삭제합니다. 리소스 유형에 따라 서비스 중단, 데이터 손실 또는 둘 다 발생할 수 있습니다.