쿠키 기본 설정 선택

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

사용자가 동의하는 경우 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일에 지원이 종료되었습니다.

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

측면은 지정된 범위의 모든 구문에 작업을 적용하는 방법입니다. 이러한 측면은 태그를 추가하는 등의 방식으로 구문을 수정할 수 있습니다. 또는 모든 버킷이 암호화되어 있는지 확인하는 등 구문의 상태에 대한 내용을 확인할 수도 있습니다.

구문과 같은 범위의 모든 구문에 측면을 적용하려면 다음 예와 같이 새 측면을 사용하여 Aspects.of(SCOPE).add()를 직접적으로 호출합니다.

TypeScript
Aspects.of(myConstruct).add(new SomeAspect(...));
JavaScript
Aspects.of(myConstruct).add(new SomeAspect(...));
Python
Aspects.of(my_construct).add(SomeAspect(...))
Java
Aspects.of(myConstruct).add(new SomeAspect(...));
C#
Aspects.Of(myConstruct).add(new SomeAspect(...));
Go
awscdk.Aspects_Of(stack).Add(awscdk.NewTag(...))
Aspects.of(myConstruct).add(new SomeAspect(...));

는 측면을 AWS CDK 사용하여 리소스에 태그를 지정하지만 프레임워크는 다른 용도로도 사용할 수 있습니다. 예를 들어, 이를 사용하여 상위 수준 구문으로 정의된 AWS CloudFormation 리소스를 검증하거나 변경할 수 있습니다.

측면 세부 정보

측면은 방문자 패턴을 사용합니다. 측면은 다음 인터페이스를 구현하는 클래스입니다.

TypeScript
interface IAspect { visit(node: IConstruct): void;}
JavaScript

JavaScript에는 언어 기능으로 인터페이스가 없습니다. 따라서 측면은 단순히 작업할 노드를 수락하는 visit 메서드가 있는 클래스의 인스턴스입니다.

Python

Python에는 언어 기능으로 인터페이스가 없습니다. 따라서 측면은 단순히 작업할 노드를 수락하는 visit 메서드가 있는 클래스의 인스턴스입니다.

Java
public interface IAspect { public void visit(Construct node); }
C#
public interface IAspect { void Visit(IConstruct node); }
Go
type IAspect interface { Visit(node constructs.IConstruct) }
interface IAspect { visit(node: IConstruct): void;}

Aspects.of(SCOPE).add(...)를 직접적으로 호출하면 구문이 내부 측면 목록에 측면을 추가합니다. Aspects.of(SCOPE)를 사용하여 목록을 얻을 수 있습니다.

준비 단계에서는 구문 및 각 하위에 대한 객체의 visit 메서드를 하향식 순서로 AWS CDK 호출합니다.

visit 메서드는 구문의 모든 것을 자유롭게 변경할 수 있습니다. 강력한 형식의 언어에서는 구문별 속성이나 메서드에 액세스하기 전에 수신된 구문을 더 구체적인 형식으로 캐스팅합니다.

Stages은 독립적이고 정의 후 변경할 수 없기 때문에 측면이 Stage 구문 경계를 넘어 전파되지 않습니다. Stage 내부의 구문을 방문하게 하려면 Stage 구문 자체 또는 그 아래에 측면을 적용합니다.

예제

다음 예에서는 스택에서 생성된 모든 버킷에 버전 관리가 활성화되어 있는지 검증합니다. 측면이 검증에 실패한 구문에 오류 주석을 추가합니다. 이로 인해 synth 작업이 실패하고 결과적으로 생성된 클라우드 어셈블리가 배포되지 않습니다.

TypeScript
class BucketVersioningChecker implements IAspect { public visit(node: IConstruct): void { // See that we're dealing with a CfnBucket if (node instanceof s3.CfnBucket) { // Check for versioning property, exclude the case where the property // can be a token (IResolvable). if (!node.versioningConfiguration || (!Tokenization.isResolvable(node.versioningConfiguration) && node.versioningConfiguration.status !== 'Enabled')) { Annotations.of(node).addError('Bucket versioning is not enabled'); } } } } // Later, apply to the stack Aspects.of(stack).add(new BucketVersioningChecker());
JavaScript
class BucketVersioningChecker { visit(node) { // See that we're dealing with a CfnBucket if ( node instanceof s3.CfnBucket) { // Check for versioning property, exclude the case where the property // can be a token (IResolvable). if (!node.versioningConfiguration || !Tokenization.isResolvable(node.versioningConfiguration) && node.versioningConfiguration.status !== 'Enabled')) { Annotations.of(node).addError('Bucket versioning is not enabled'); } } } } // Later, apply to the stack Aspects.of(stack).add(new BucketVersioningChecker());
Python
@jsii.implements(cdk.IAspect) class BucketVersioningChecker: def visit(self, node): # See that we're dealing with a CfnBucket if isinstance(node, s3.CfnBucket): # Check for versioning property, exclude the case where the property # can be a token (IResolvable). if (not node.versioning_configuration or not Tokenization.is_resolvable(node.versioning_configuration) and node.versioning_configuration.status != "Enabled"): Annotations.of(node).add_error('Bucket versioning is not enabled') # Later, apply to the stack Aspects.of(stack).add(BucketVersioningChecker())
Java
public class BucketVersioningChecker implements IAspect { @Override public void visit(Construct node) { // See that we're dealing with a CfnBucket if (node instanceof CfnBucket) { CfnBucket bucket = (CfnBucket)node; Object versioningConfiguration = bucket.getVersioningConfiguration(); if (versioningConfiguration == null || !Tokenization.isResolvable(versioningConfiguration.toString()) && !versioningConfiguration.toString().contains("Enabled")) Annotations.of(bucket.getNode()).addError("Bucket versioning is not enabled"); } } } // Later, apply to the stack Aspects.of(stack).add(new BucketVersioningChecker());
C#
class BucketVersioningChecker : Amazon.Jsii.Runtime.Deputy.DeputyBase, IAspect { public void Visit(IConstruct node) { // See that we're dealing with a CfnBucket if (node is CfnBucket) { var bucket = (CfnBucket)node; if (bucket.VersioningConfiguration is null || !Tokenization.IsResolvable(bucket.VersioningConfiguration) && !bucket.VersioningConfiguration.ToString().Contains("Enabled")) Annotations.Of(bucket.Node).AddError("Bucket versioning is not enabled"); } } } // Later, apply to the stack Aspects.Of(stack).add(new BucketVersioningChecker());
class BucketVersioningChecker implements IAspect { public visit(node: IConstruct): void { // See that we're dealing with a CfnBucket if (node instanceof s3.CfnBucket) { // Check for versioning property, exclude the case where the property // can be a token (IResolvable). if (!node.versioningConfiguration || (!Tokenization.isResolvable(node.versioningConfiguration) && node.versioningConfiguration.status !== 'Enabled')) { Annotations.of(node).addError('Bucket versioning is not enabled'); } } } } // Later, apply to the stack Aspects.of(stack).add(new BucketVersioningChecker());

이 페이지에서

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