Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS CDK ライブラリの操作

フォーカスモード
AWS CDK ライブラリの操作 - AWS Cloud Development Kit (AWS CDK) v2

これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Cloud Development Kit (AWS CDK) ライブラリをインポートして使用し、サポートされているプログラミング言語で AWS クラウド インフラストラクチャを定義します。

AWS CDK ライブラリをインポートする

AWS CDK ライブラリは、多くの場合は aws-cdk-lib という TypeScript パッケージ名で参照されます。実際のパッケージ名は言語によって異なります。次の内容は、CDK ライブラリをインストールしてインポートする方法の例です。

TypeScript
インストール npm install aws-cdk-lib
Import import * as cdk from 'aws-cdk-lib';
JavaScript
インストール npm install aws-cdk-lib
Import const cdk = require('aws-cdk-lib');
Python
インストール python -m pip install aws-cdk-lib
Import import aws_cdk as cdk
Java
pom.xml に追加 Group software.amazon.awscdk; artifact aws-cdk-lib
Import import software.amazon.awscdk.App;
C#
インストール dotnet add package Amazon.CDK.Lib
Import using Amazon.CDK;
Go
インストール go get github.com/aws/aws-cdk-go/awscdk/v2
Import
import ( "github.com/aws/aws-cdk-go/awscdk/v2" )
インストール npm install aws-cdk-lib
Import import * as cdk from 'aws-cdk-lib';

construct ベースクラスおよびサポートコードは constructs ライブラリにあります。API がまだ改良中である実験コンストラクトは、個別のモジュールとして分散されます。

AWS CDK API リファレンスの使用

AWS CDKで開発するときは、AWS CDK API リファレンスを使用します。

各モジュールのリファレンスマテリアルは、次のセクションに分かれています。

  • 概要: の概念や例など AWS CDK、 のサービスを使用する際に知っておくべき入門資料です。

  • コンストラクト: 1 つ以上の具体的な AWS リソースを表すライブラリクラス。これらは「キュレートされた」(L2) リソースまたはパターン (L3 リソース) であり、正しいデフォルトを持つ高レベルのインターフェイスを提供します。

  • クラス: モジュールのコンストラクトによって使用される機能を提供する非コンストラクトクラス。

  • 構造: プロパティ (コンストラクトの props 引数) やオプションなどの複合値の構造を定義するデータ構造 (属性バンドル)。

  • インターフェイス: 名前が「I」で始まるすべてのインターフェイスは、対応するコンストラクトまたは他のクラスの絶対最小機能を定義します。CDK はコンストラクトインターフェイスを使用して、 AWS CDK アプリの外部で定義され、 などのメソッドによって参照される AWS リソースを表しますBucket.fromBucketArn()

  • 列挙型: 特定のコンストラクトパラメータの指定に使用する名前付き値のコレクション。列挙値を使用すると、CDK が合成中にこれらの値の有効性を確認できるようにします。

  • CloudFormation リソース: 名前が「Cfn」で始まるこれらの L1 コンストラクトは、CloudFormation 仕様で定義されているリソースを正確に表しています。CDK リリースごとにその仕様から自動的に生成されます。各 L2 または L3 コンストラクトは、1 つ以上の CloudFormation リソースをカプセル化します。

  • CloudFormation のプロパティタイプ: 各 CloudFormation リソースのプロパティを定義する名前付き値のコレクション。

コンストラクトクラスと比較したインターフェイス

では、インターフェイスをプログラミングの概念として理解している場合でも、明確でない可能性のある特定の方法でインターフェイス AWS CDK を使用します。

は、 などのメソッドを使用して CDK アプリケーション外で定義されたリソースの使用 AWS CDK をサポートしますBucket.fromBucketArn()。外部リソースは変更できず、Bucket クラスなどを使用して CDK アプリで定義されたリソースで利用可能な機能がすべて揃っていない場合があります。次に、インターフェイスは、外部 AWS リソースなど、特定のリソースタイプの CDK で使用できる最低限の機能を表します。

CDK アプリでリソースをインスタンス化するとき、Bucket などの具体的なクラスを常に使用する必要があります。独自のコンストラクトのいずれかで受け入れる引数のタイプを指定するとき、外部リソースを処理する準備ができている場合、IBucket などのインターフェイスタイプを使用します (つまり、変更が不要)。CDK で定義されたコンストラクトが必要な場合、使用できる最も一般的なタイプを指定します。

一部のインターフェイスは、コンストラクトではなく、特定のクラスに関連付けられたプロパティまたはオプションバンドルの最小バージョンです。このようなインターフェイスは、親クラスに渡す引数を受け入れるようにサブクラス化するときに便利です。1 つ以上の追加プロパティが必要な場合、このインターフェイスまたはより具体的なタイプから実装または取得する必要があります。

注記

でサポートされている一部のプログラミング言語には、インターフェイス機能 AWS CDK がありません。これらの言語では、インターフェイスは通常のクラスにすぎません。頭文字の「I」の後に他のコンストラクトの名前 (例えば、IBucket) が続くパターンに従う名前で特定できます。同じルールが適用されます。

依存関係の管理

AWS CDK アプリケーションまたはライブラリの依存関係は、パッケージ管理ツールを使用して管理されます。これらのツールはプログラミング言語で一般的に使用されます。

通常、 は言語の標準または公式のパッケージ管理ツールがある場合はそれ AWS CDK をサポートします。それ以外の場合、 AWS CDK は言語の最も人気のある、または広くサポートされている言語をサポートします。特にサポートされているツールに対応している場合、他のツールも使用できる場合があります。ただし、他のツールの公式サポートは限られています。

は、次のパッケージマネージャー AWS CDK をサポートしています。

言語 サポートされているパッケージ管理ツール
TypeScript/JavaScript NPM (ノードパッケージマネージャー) または Yarn
Python PIP (Python のパッケージインストーラ)
Java Maven
C# NuGet
Go Go モジュール

cdk init コマンドを使用して AWS CDK CLI新しいプロジェクトを作成すると、CDK コアライブラリと安定したコンストラクトの依存関係が自動的に指定されます。

サポートされているプログラミング言語の依存関係の管理における詳細については、次の内容を参照してください。

AWS CDKTypeScript と他の言語の比較

TypeScript は、 AWS CDK アプリケーションの開発でサポートされている最初の言語です。したがって、大量の CDK コード例は TypeScript に記述されています。別の言語で開発している場合は、TypeScript での AWS CDK コードの実装方法と選択した言語を比較することをお勧めします。ドキュメント全体の例を使用できるようになります。

モジュールのインポート

TypeScript/JavaScript

TypeScript は名前空間全体のインポート、あるいは名前空間から個々のオブジェクトのインポートのいずれかをサポートしています。各名前空間には、特定の AWS サービスで使用するコンストラクトやその他のクラスが含まれています。

// Import main CDK library as cdk import * as cdk from 'aws-cdk-lib'; // ES6 import preferred in TS const cdk = require('aws-cdk-lib'); // Node.js require() preferred in JS // Import specific core CDK classes import { Stack, App } from 'aws-cdk-lib'; const { Stack, App } = require('aws-cdk-lib'); // Import AWS S3 namespace as s3 into current namespace import { aws_s3 as s3 } from 'aws-cdk-lib'; // TypeScript const s3 = require('aws-cdk-lib/aws-s3'); // JavaScript // Having imported cdk already as above, this is also valid const s3 = cdk.aws_s3; // Now use s3 to access the S3 types const bucket = s3.Bucket(...); // Selective import of s3.Bucket import { Bucket } from 'aws-cdk-lib/aws-s3'; // TypeScript const { Bucket } = require('aws-cdk-lib/aws-s3'); // JavaScript // Now use Bucket to instantiate an S3 bucket const bucket = Bucket(...);

TypeScript は名前空間全体のインポート、あるいは名前空間から個々のオブジェクトのインポートのいずれかをサポートしています。各名前空間には、特定の AWS サービスで使用するコンストラクトやその他のクラスが含まれています。

// Import main CDK library as cdk import * as cdk from 'aws-cdk-lib'; // ES6 import preferred in TS const cdk = require('aws-cdk-lib'); // Node.js require() preferred in JS // Import specific core CDK classes import { Stack, App } from 'aws-cdk-lib'; const { Stack, App } = require('aws-cdk-lib'); // Import AWS S3 namespace as s3 into current namespace import { aws_s3 as s3 } from 'aws-cdk-lib'; // TypeScript const s3 = require('aws-cdk-lib/aws-s3'); // JavaScript // Having imported cdk already as above, this is also valid const s3 = cdk.aws_s3; // Now use s3 to access the S3 types const bucket = s3.Bucket(...); // Selective import of s3.Bucket import { Bucket } from 'aws-cdk-lib/aws-s3'; // TypeScript const { Bucket } = require('aws-cdk-lib/aws-s3'); // JavaScript // Now use Bucket to instantiate an S3 bucket const bucket = Bucket(...);
Python

TypeScript と同様に、Python は名前空間モジュールインポートおよび選択的インポートをサポートしています。Python の名前空間は aws_cdk.xxx のようになります。ここで、xxx は Amazon S33 の s3 などの AWS サービス名を表します。(Amazon S3 はこれらの例で使用されます)。

# Import main CDK library as cdk import aws_cdk as cdk # Selective import of specific core classes from aws_cdk import Stack, App # Import entire module as s3 into current namespace import aws_cdk.aws_s3 as s3 # s3 can now be used to access classes it contains bucket = s3.Bucket(...) # Selective import of s3.Bucket into current namespace from aws_cdk.s3 import Bucket # Bucket can now be used to instantiate a bucket bucket = Bucket(...)
Java

Java のインポートは、TypeScript のものとは動作が異なります。各インポートステートメントは、特定のパッケージから 1 つのクラス名、あるいはそのパッケージで定義されているすべてのクラス (* を使用) のいずれかをインポートします。クラス名がインポートされている場合はクラス名の単体、あるいはパッケージを含む修飾クラス名のいずれかを使用し、クラスにアクセスできます。

ライブラリの名前は AWS 、 コンストラクトライブラリsoftware.amazon.awscdk.services.xxxの のような名前です (メインライブラリは ですsoftware.amazon.awscdk)。 AWS CDK パッケージの Maven グループ ID は ですsoftware.amazon.awscdk

// Make certain core classes available import software.amazon.awscdk.Stack; import software.amazon.awscdk.App; // Make all Amazon S3 construct library classes available import software.amazon.awscdk.services.s3.*; // Make only Bucket and EventType classes available import software.amazon.awscdk.services.s3.Bucket; import software.amazon.awscdk.services.s3.EventType; // An imported class may now be accessed using the simple class name (assuming that name // does not conflict with another class) Bucket bucket = Bucket.Builder.create(...).build(); // We can always use the qualified name of a class (including its package) even without an // import directive software.amazon.awscdk.services.s3.Bucket bucket = software.amazon.awscdk.services.s3.Bucket.Builder.create(...) .build(); // Java 10 or later can use var keyword to avoid typing the type twice var bucket = software.amazon.awscdk.services.s3.Bucket.Builder.create(...) .build();
C#

C# では、using ディレクティブを使用してタイプをインポートします。2 つの形式があります。1 つはプレーン名を使用し、指定された名前空間のすべてのタイプにアクセスできます。もう 1 つは、エイリアスを使用して名前空間自体を参照できます。

パッケージの名前は AWS 、 コンストラクトライブラリパッケージAmazon.CDK.AWS.xxxの のような名前です。(コアモジュールは Amazon.CDK)

// Make CDK base classes available under cdk using cdk = Amazon.CDK; // Make all Amazon S3 construct library classes available using Amazon.CDK.AWS.S3; // Now we can access any S3 type using its name var bucket = new Bucket(...); // Import the S3 namespace under an alias using s3 = Amazon.CDK.AWS.S3; // Now we can access an S3 type through the namespace alias var bucket = new s3.Bucket(...); // We can always use the qualified name of a type (including its namespace) even without a // using directive var bucket = new Amazon.CDK.AWS.S3.Bucket(...)
Go

各 AWS コンストラクトライブラリモジュールは Go パッケージとして提供されます。

import ( "github.com/aws/aws-cdk-go/awscdk/v2" // CDK core package "github.com/aws/aws-cdk-go/awscdk/v2/awss3" // AWS S3 construct library module ) // now instantiate a bucket bucket := awss3.NewBucket(...) // use aliases for brevity/clarity import ( cdk "github.com/aws/aws-cdk-go/awscdk/v2" // CDK core package s3 "github.com/aws/aws-cdk-go/awscdk/v2/awss3" // AWS S3 construct library module ) bucket := s3.NewBucket(...)

TypeScript と同様に、Python は名前空間モジュールインポートおよび選択的インポートをサポートしています。Python の名前空間は aws_cdk.xxx のようになります。ここで、xxx は Amazon S33 の s3 などの AWS サービス名を表します。(Amazon S3 はこれらの例で使用されます)。

# Import main CDK library as cdk import aws_cdk as cdk # Selective import of specific core classes from aws_cdk import Stack, App # Import entire module as s3 into current namespace import aws_cdk.aws_s3 as s3 # s3 can now be used to access classes it contains bucket = s3.Bucket(...) # Selective import of s3.Bucket into current namespace from aws_cdk.s3 import Bucket # Bucket can now be used to instantiate a bucket bucket = Bucket(...)

コンストラクトのインスタンス化

AWS CDK コンストラクトクラスの名前は、サポートされているすべての言語で同じです。ほとんどの言語は、new キーワードを使用してクラスをインスタンス化します (Python と Go はしません)。また、ほとんどの言語ではキーワードは this 現在のインスタンスを参照します。(Python は 規則で self を使用します) 作成するすべてのコンストラクトに対し、scope パラメータとして現在のインスタンスに参照を渡す必要があります。

AWS CDK コンストラクトの 3 番目の引数は です。これはprops、コンストラクトの構築に必要な属性を含むオブジェクトです。この引数はオプションですが、必要なときはサポートされている言語が特異な方法で処理します。属性の名前は、言語の標準命名パターンにも適応されています。

TypeScript/JavaScript
// Instantiate default Bucket const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket'); // Instantiate Bucket with bucketName and versioned properties const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket', { bucketName: 'amzn-s3-demo-bucket', versioned: true, }); // Instantiate Bucket with websiteRedirect, which has its own sub-properties const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket', { websiteRedirect: {host: 'aws.amazon.com'}});
// Instantiate default Bucket const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket'); // Instantiate Bucket with bucketName and versioned properties const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket', { bucketName: 'amzn-s3-demo-bucket', versioned: true, }); // Instantiate Bucket with websiteRedirect, which has its own sub-properties const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket', { websiteRedirect: {host: 'aws.amazon.com'}});
Python

Python は、クラスをインスタンス化するときに new キーワードを使用しません。プロパティ引数はキーワード引数を使用して表され、引数は snake_case を使用して名前が付けられます。

props 値自体が属性のバンドルである場合、プロパティの後に名前が付けられたクラスで表され、サブプロパティのキーワード引数を受け入れます。

Python では、現在のインスタンスは最初の引数としてメソッドに渡されます。この引数は、規則によって self という名前が付けられます。

# Instantiate default Bucket bucket = s3.Bucket(self, "amzn-s3-demo-bucket") # Instantiate Bucket with bucket_name and versioned properties bucket = s3.Bucket(self, "amzn-s3-demo-bucket", bucket_name="amzn-s3-demo-bucket", versioned=true) # Instantiate Bucket with website_redirect, which has its own sub-properties bucket = s3.Bucket(self, "amzn-s3-demo-bucket", website_redirect=s3.WebsiteRedirect( host_name="aws.amazon.com"))
Java

Java では、props 引数は XxxxProps という名前のクラス (例えば、Bucket コンストラクトの props に BucketProps) で表されます。ビルダーパターンを使用して props 引数を構築します。

XxxxProps クラスにはビルダーがあります。次の例で示すように、1 つのステップで props およびコンストラクトを構築する各コンストラクトに便利なビルダーもあります。

Props は、camelCase を使用して TypeScript と同じように名前が付けられます。

// Instantiate default Bucket Bucket bucket = Bucket(self, "amzn-s3-demo-bucket"); // Instantiate Bucket with bucketName and versioned properties Bucket bucket = Bucket.Builder.create(self, "amzn-s3-demo-bucket") .bucketName("amzn-s3-demo-bucket").versioned(true) .build(); # Instantiate Bucket with websiteRedirect, which has its own sub-properties Bucket bucket = Bucket.Builder.create(self, "amzn-s3-demo-bucket") .websiteRedirect(new websiteRedirect.Builder() .hostName("aws.amazon.com").build()) .build();
C#

C# では、XxxxProps という名前のクラスにオブジェクト初期化子を使用して props が指定されます (例えば、Bucket コンストラクトの props に BucketProps)。

Props は TypeScript と同様に名前が付けられますが、PascalCase が使用されます。

コンストラクトをインスタンス化するときに var キーワードを使用するのが便利なため、クラス名を 2 回入力する必要はありません。ただし、ローカルコードのスタイルガイドは異なる場合があります。

// Instantiate default Bucket var bucket = Bucket(self, "amzn-s3-demo-bucket"); // Instantiate Bucket with BucketName and Versioned properties var bucket = Bucket(self, "amzn-s3-demo-bucket", new BucketProps { BucketName = "amzn-s3-demo-bucket", Versioned = true}); // Instantiate Bucket with WebsiteRedirect, which has its own sub-properties var bucket = Bucket(self, "amzn-s3-demo-bucket", new BucketProps { WebsiteRedirect = new WebsiteRedirect { HostName = "aws.amazon.com" }});
Go

Go でコンストラクトを作成するには、Xxxxxxx がコンストラクトの名前である NewXxxxxx 関数を呼び出します。コンストラクトのプロパティは構造として定義されます。

Go では、すべてのコンストラクトパラメータはポインタであり、数値、ブール値、文字列などの値を含みます。jsii.String などの便利な関数を使用してこれらのポインタを作成します。

// Instantiate default Bucket bucket := awss3.NewBucket(stack, jsii.String("amzn-s3-demo-bucket"), nil) // Instantiate Bucket with BucketName and Versioned properties bucket1 := awss3.NewBucket(stack, jsii.String("amzn-s3-demo-bucket"), &awss3.BucketProps{ BucketName: jsii.String("amzn-s3-demo-bucket"), Versioned: jsii.Bool(true), }) // Instantiate Bucket with WebsiteRedirect, which has its own sub-properties bucket2 := awss3.NewBucket(stack, jsii.String("amzn-s3-demo-bucket"), &awss3.BucketProps{ WebsiteRedirect: &awss3.RedirectTarget{ HostName: jsii.String("aws.amazon.com"), }})

Python は、クラスをインスタンス化するときに new キーワードを使用しません。プロパティ引数はキーワード引数を使用して表され、引数は snake_case を使用して名前が付けられます。

props 値自体が属性のバンドルである場合、プロパティの後に名前が付けられたクラスで表され、サブプロパティのキーワード引数を受け入れます。

Python では、現在のインスタンスは最初の引数としてメソッドに渡されます。この引数は、規則によって self という名前が付けられます。

# Instantiate default Bucket bucket = s3.Bucket(self, "amzn-s3-demo-bucket") # Instantiate Bucket with bucket_name and versioned properties bucket = s3.Bucket(self, "amzn-s3-demo-bucket", bucket_name="amzn-s3-demo-bucket", versioned=true) # Instantiate Bucket with website_redirect, which has its own sub-properties bucket = s3.Bucket(self, "amzn-s3-demo-bucket", website_redirect=s3.WebsiteRedirect( host_name="aws.amazon.com"))

メンバーへのアクセス

コンストラクトやその他の AWS CDK クラスの属性やプロパティを参照し、これらの値を例えば、他のコンストラクトを構築するための入力として使用するのが一般的です。メソッドの前述の名前付けによる違いは、ここでも適用されます。さらに、Java ではメンバーに直接アクセスすることはできません。代わりに、ゲッターメソッドが用意されています。

TypeScript/JavaScript

名前は camelCase です。

bucket.bucketArn

名前は camelCase です。

bucket.bucketArn
Python

名前は snake_case です。

bucket.bucket_arn
Java

各プロパティにはゲッターメソッドが用意されています。これらの名前は camelCase です。

bucket.getBucketArn()
C#

名前は PascalCase です。

bucket.BucketArn
Go

名前は PascalCase です。

bucket.BucketArn

名前は snake_case です。

bucket.bucket_arn

列挙型定数

列挙型定数はクラスにスコープされ、すべての言語で下線が付いた大文字の名前があります (SCREAMING_SNAKE_CASE と呼ばれることもあります)。クラス名は Go を除くサポートされているすべての言語でも同じケーシングを使用するため、修飾された列挙型名はこれらの言語でも同じです。

s3.BucketEncryption.KMS_MANAGED

Go では、列挙型定数はモジュール名前空間の属性であり、次のように記述されます。

awss3.BucketEncryption_KMS_MANAGED

オブジェクトインターフェイス

AWS CDK は TypeScript オブジェクトインターフェイスを使用して、クラスが予想されるメソッドとプロパティのセットを実装していることを示します。オブジェクトインターフェイスの名前の頭文字が I であるため、識別できます。具体的なクラスは、implements キーワードを使用して実装するインターフェイスを示します。

TypeScript/JavaScript
注記

JavaScript にはインターフェイス機能はありません。implements キーワードおよびその後に続くクラス名を無視してください。

import { IAspect, IConstruct } from 'aws-cdk-lib'; class MyAspect implements IAspect { public visit(node: IConstruct) { console.log('Visited', node.node.path); } }
注記

JavaScript にはインターフェイス機能はありません。implements キーワードおよびその後に続くクラス名を無視してください。

import { IAspect, IConstruct } from 'aws-cdk-lib'; class MyAspect implements IAspect { public visit(node: IConstruct) { console.log('Visited', node.node.path); } }
Python

Python にはインターフェイス機能はありません。ただし、 AWS CDK では、 クラスを でデコレートすることで、インターフェイスの実装を指定できます@jsii.implements(interface)

from aws_cdk import IAspect, IConstruct import jsii @jsii.implements(IAspect) class MyAspect(): def visit(self, node: IConstruct) -> None: print("Visited", node.node.path)
Java
import software.amazon.awscdk.IAspect; import software.amazon.awscdk.IConstruct; public class MyAspect implements IAspect { public void visit(IConstruct node) { System.out.format("Visited %s", node.getNode().getPath()); } }
C#
using Amazon.CDK; public class MyAspect : IAspect { public void Visit(IConstruct node) { System.Console.WriteLine($"Visited ${node.Node.Path}"); } }
Go

Go 構造は、実装するインターフェイスを明示的に宣言する必要はありません。Go コンパイラは、構造で利用可能なメソッドおよびプロパティに基づいて実装を決定します。例えば、次のコードでは、MyAspect は コンストラクトを取る Visit メソッドを提示するため、IAspect インターフェイスを実装します。

type MyAspect struct { } func (a MyAspect) Visit(node constructs.IConstruct) { fmt.Println("Visited", *node.Node().Path()) }

Python にはインターフェイス機能はありません。ただし、 AWS CDK では、 クラスを でデコレートすることで、インターフェイスの実装を指定できます@jsii.implements(interface)

from aws_cdk import IAspect, IConstruct import jsii @jsii.implements(IAspect) class MyAspect(): def visit(self, node: IConstruct) -> None: print("Visited", node.node.path)
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.