쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

식별자 및 AWS CDK

포커스 모드
식별자 및 AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.

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

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는 구문 객체를 인스턴스화할 때 두 번째 인수로 전달되는 식별자입니다. 이 식별자는 모든 식별자와 마찬가지로 구문 객체를 인스턴스화할 때 첫 번째 인수인 생성 범위 내에서만 고유하면 됩니다.

참고

스택의 idAWS CDK참조CLI에서 참조하는 데 사용하는 식별자입니다.

앱에 식별자가 MyBucket인 2개의 구문이 있는 예를 살펴보겠습니다. 첫 번째는 식별자가 Stack1인 스택의 범위에 정의됩니다. 두 번째는 식별자가 Stack2인 스택의 범위에 정의됩니다. 서로 다른 범위로 정의되므로 충돌이 발생하지 않으며 문제 없이 동일한 앱에서 공존할 수 있습니다.

TypeScript
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');
JavaScript
const { App , Stack } = require('aws-cdk-lib'); const s3 = require('aws-cdk-lib/aws-s3'); class MyStack extends Stack { constructor(scope, id, props = {}) { super(scope, id, props); new s3.Bucket(this, 'MyBucket'); } } const app = new App(); new MyStack(app, 'Stack1'); new MyStack(app, 'Stack2');
Python
from aws_cdk import App, Construct, Stack, StackProps from constructs import Construct from aws_cdk import aws_s3 as s3 class MyStack(Stack): def __init__(self, scope: Construct, id: str, **kwargs): super().__init__(scope, id, **kwargs) s3.Bucket(self, "MyBucket") app = App() MyStack(app, 'Stack1') MyStack(app, 'Stack2')
Java
// MyStack.java package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; import software.constructs.Construct; import software.amazon.awscdk.services.s3.Bucket; public class MyStack extends Stack { public MyStack(final Construct scope, final String id) { this(scope, id, null); } public MyStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); new Bucket(this, "MyBucket"); } } // Main.java package com.myorg; import software.amazon.awscdk.App; public class Main { public static void main(String[] args) { App app = new App(); new MyStack(app, "Stack1"); new MyStack(app, "Stack2"); } }
C#
using Amazon.CDK; using constructs; using Amazon.CDK.AWS.S3; public class MyStack : Stack { public MyStack(Construct scope, string id, IStackProps props) : base(scope, id, props) { new Bucket(this, "MyBucket"); } } class Program { static void Main(string[] args) { var app = new App(); new MyStack(app, "Stack1"); new MyStack(app, "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/MyBucketStack2/MyBucket입니다.

다음 예와 같이 프로그래밍 방식으로 모든 구문의 경로에 액세스할 수 있습니다. 이는 myConstruct 또는 my_construct(Python 개발자가 작성)의 경로를 가져옵니다. IDs는 생성된 범위 내에서 고유해야 하므로 AWS CDK 애플리케이션 내에서 경로는 항상 고유합니다.

TypeScript
const path: string = myConstruct.node.path;
JavaScript
const path = myConstruct.node.path;
Python
path = my_construct.node.path
Java
String path = myConstruct.getNode().getPath();
C#
string path = myConstruct.Node.Path;
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에 액세스할 수 있습니다.

TypeScript
const uid: string = Names.uniqueId(myConstruct);
JavaScript
const uid = Names.uniqueId(myConstruct);
Python
uid = Names.unique_id(my_construct)
Java
String uid = Names.uniqueId(myConstruct);
C#
string uid = Names.Uniqueid(myConstruct);
const uid: string = Names.uniqueId(myConstruct);

주소는 CDK 리소스를 고유하게 구분하는 또 다른 종류의 고유 식별자입니다. 경로의 SHA-1 해시에서 파생되어 사람이 읽을 수 없습니다. 그러나 길이가 일정하고 비교적 짧기 때문에(항상 42개의 16진수 문자) ’전통적’ 고유 ID가 너무 길 수 있는 상황에서 유용합니다. 일부 구문은 고유 ID 대신 합성된 AWS CloudFormation 템플릿의 주소를 사용할 수 있습니다. 다시 말해, 앱은 일반적으로 해당 구문의 주소를 알 필요가 없지만 다음과 같이 구문의 주소를 검색할 수 있습니다.

TypeScript
const addr: string = myConstruct.node.addr;
JavaScript
const addr = myConstruct.node.addr;
Python
addr = my_construct.node.addr
Java
String addr = myConstruct.getNode().getAddr();
C#
string addr = myConstruct.Node.Addr;
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 생성한 다음 기존 리소스를 삭제합니다. 리소스 유형에 따라 서비스 중단, 데이터 손실 또는 둘 다 발생할 수 있습니다.

이 페이지에서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.