パラメータ - AWS Cloud Development Kit (AWS CDK) v2

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

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

パラメータ

パラメータは、デプロイ時に提供されるカスタム値です。パラメータは の機能です AWS CloudFormation。は AWS CloudFormation テンプレートを AWS Cloud Development Kit (AWS CDK) 合成するため、デプロイ時パラメータもサポートされています。

パラメータについて

を使用すると AWS CDK、パラメータを定義できます。パラメータは、作成したコンストラクトのプロパティで使用できます。パラメータを含むスタックをデプロイすることもできます。

AWS CDK Toolkit を使用して AWS CloudFormation テンプレートをデプロイするときは、コマンドラインでパラメータ値を指定します。 AWS CloudFormation コンソールからテンプレートをデプロイすると、パラメータ値の入力を求められます。

一般的に、 で AWS CloudFormation パラメータを使用しないことをお勧めします AWS CDK。値を AWS CDK アプリケーションに渡す通常の方法は、コンテキスト値と環境変数です。合成時に使用できないため、パラメータ値は CDK アプリのフロー制御やその他の目的に簡単に使用できません。

注記

パラメータで制御フローを行うには、CfnConditionコンストラクトを使用できますが、これはネイティブifステートメントに比べて面倒です。

パラメータを使用するには、記述するコードがデプロイ時および合成時にどのように動作するかに注意する必要があります。これにより、メリットをほとんど得られないために、多くの場合、 AWS CDK アプリケーションを理解し、その理由を理解することが難しくなります。

通常、CDK アプリは必要な情報を明確に定義して受け入れ、CDK アプリでコンストラクトを宣言するために直接使用する方が適しています。理想的に AWS CDK生成された AWS CloudFormation テンプレートは具体的であり、デプロイ時に指定できる値はありません。

ただし、 AWS CloudFormation パラメータが一意に適しているユースケースがあります。例えば、インフラストラクチャを定義してデプロイするチームが別の場合は、パラメータを使用して生成されたテンプレートをより広く活用できます。また、 はパラメータ AWS CDK をサポート AWS CloudFormation しているため、 AWS CloudFormation テンプレートを使用する AWS サービス (Service Catalog など) AWS CDK で を使用できます。これらの AWS サービスは、パラメータを使用してデプロイされるテンプレートを設定します。

パラメータの定義

CfnParameter クラスを使用してパラメータを定義します。少なくともほとんどのパラメータのタイプと説明を指定する必要がありますが、どちらも技術的にはオプションです。説明は、ユーザーが AWS CloudFormation コンソールにパラメータの値を入力するように求められたときに表示されます。使用可能なタイプの詳細については、「タイプ」を参照してください。

注記

パラメータは任意の範囲で定義できます。ただし、コードをリファクタリングするときに論理 ID が変更されないように、スタックレベルでパラメータを定義することをお勧めします。

TypeScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
JavaScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
Python
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String", description="The name of the Amazon S3 bucket where uploaded files will be stored.")
Java
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName") .type("String") .description("The name of the Amazon S3 bucket where uploaded files will be stored") .build();
C#
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps { Type = "String", Description = "The name of the Amazon S3 bucket where uploaded files will be stored" });

パラメータの使用

CfnParameter インスタンスは、トークン を介してその値を AWS CDK アプリケーションに公開します。すべてのトークンと同様に、パラメータのトークンは合成時に解決されます。ただし、具体的な値ではなく、 AWS CloudFormation テンプレートで定義されたパラメータ (デプロイ時に解決されます) への参照に解決されます。

トークンは、 Token クラスのインスタンスとして取得することも、文字列、文字列リスト、または数値エンコーディングで取得することもできます。選択は、 パラメータを使用するクラスまたはメソッドで必要な値の種類によって異なります。

TypeScript
Property kind of value
value トークン class instance
valueAsList The token represented as a string list
valueAsNumber The token represented as a number
valueAsString The token represented as a string
JavaScript
Property kind of value
value トークン class instance
valueAsList The token represented as a string list
valueAsNumber The token represented as a number
valueAsString The token represented as a string
Python
Property kind of value
value トークン class instance
value_as_list The token represented as a string list
value_as_number The token represented as a number
value_as_string The token represented as a string
Java
Property kind of value
getValue () トークン class instance
getValueAsList() The token represented as a string list
getValueAsNumber() The token represented as a number
getValueAs文字列 () The token represented as a string
C#
Property kind of value
トークン class instance
ValueAsList The token represented as a string list
ValueAsNumber The token represented as a number
ValueAsString The token represented as a string

例えば、Bucket定義で パラメータを使用するには、次のようにします。

TypeScript
const bucket = new Bucket(this, "myBucket", { bucketName: uploadBucketName.valueAsString});
JavaScript
const bucket = new Bucket(this, "myBucket", { bucketName: uploadBucketName.valueAsString});
Python
bucket = Bucket(self, "myBucket", bucket_name=upload_bucket_name.value_as_string)
Java
Bucket bucket = Bucket.Builder.create(this, "myBucket") .bucketName(uploadBucketName.getValueAsString()) .build();
C#
var bucket = new Bucket(this, "myBucket") { BucketName = uploadBucketName.ValueAsString };

パラメータを使用したデプロイ

パラメータを含む生成されたテンプレートは、 AWS CloudFormation コンソールから通常の方法でデプロイできます。各パラメータの値の入力を求められます。

AWS CDK Toolkit (cdk コマンドラインツール) では、デプロイ時のパラメータの指定もサポートされています。これらは、 --parametersフラグに従ってコマンドラインで指定します。次の例のように、 uploadBucketNameパラメータを使用するスタックをデプロイできます。

cdk deploy MyStack --parameters uploadBucketName=uploadbucket

複数のパラメータを定義するには、複数の--parametersフラグを使用します。

cdk deploy MyStack --parameters uploadBucketName=upbucket --parameters downloadBucketName=downbucket

複数のスタックをデプロイする場合は、スタックごとに各パラメータに異なる値を指定できます。これを行うには、 パラメータの名前の前にスタック名とコロンを付けます。

cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=uploadbucket --parameters YourStack:uploadBucketName=upbucket

デフォルトでは、 は以前のデプロイのパラメータの値 AWS CDK を保持し、明示的に指定されていない場合は、後続のデプロイでそれらを使用します。--no-previous-parameters フラグを使用して、すべてのパラメータを指定する必要があります。