これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アスペクトは、特定のスコープ内のすべてのコンストラクトに操作を適用する方法です。このアスペクトでは、タグの追加などによってコンストラクトを変更できます。または、すべてのバケットが暗号化されていることを確認するなど、コンストラクトの状態について何かを検証することもできます。
1 つのコンストラクトおよび同じスコープ内のすべてのコンストラクトにアスペクトを適用するには、以下の例に示すように、新しいアスペクトで Aspects
.of(
を呼び出します。SCOPE
).add()
Aspects.of(myConstruct).add(new SomeAspect(...));
は、 リソースにタグを付けるためにアスペクト AWS CDK を使用しますが、フレームワークは他の目的にも使用できます。例えば、これを使用して、上位レベルのコンストラクトで定義されている AWS CloudFormation リソースを検証または変更できます。
アスペクトの詳細
アスペクトは訪問者パターン
interface IAspect {
visit(node: IConstruct): void;}
Aspects.of(
を呼び出すと、コンストラクトはアスペクトの内部リストにアスペクトを追加します。SCOPE
).add(...)Aspects.of(
でリストを取得できます。SCOPE
)
準備フェーズ中、 はコンストラクトとその各子の オブジェクトの visit
メソッドをトップダウンの順序で AWS CDK 呼び出します。
visit
メソッドは、コンストラクト内の任意の要素を自由に変更できます。強く型付けされた言語では、受信したコンストラクトをより具体的な型にキャストしてから、コンストラクト固有のプロパティやメソッドにアクセスします。
Stages
は定義後は自己完結型で不変であるため、アスペクトは Stage
コンストラクトの境界を越えては伝播しません。Stage
内のコンストラクトを訪問する場合は、Stage
コンストラクト自体 (またはそれ以下) にアスペクトを適用します。
例
以下の例では、スタックで作成されたすべてのバケットでバージョニングが有効になっていることを検証します。このアスペクトは、検証に失敗したコンストラクトにエラー注釈を追加します。これにより、synth 操作が失敗し、結果として生成されたクラウドアセンブリのデプロイが防止されます。
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());