これは AWS CDK v2 デベロッパーガイドです。古い CDKv1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CloudFormation パラメータを使用して CloudFormation 値を取得する
AWS Cloud Development Kit (AWS CDK) アプリケーション内の AWS CloudFormation パラメータを使用して、デプロイ時に合成された CloudFormationテンプレートにカスタム値を入力します。
概要については、「パラメータと AWS CDK」を参照してください。
CDK アプリでパラメータを定義する
CfnParameter
クラスを使用してパラメータを定義します。ほとんどのパラメータには少なくとも 1 つのタイプと説明を指定する必要がありますが、どちらも技術的にはオプションです。説明は、ユーザーが AWS CloudFormation コンソールにパラメータの値を入力するように求められたときに表示されます。使用可能なタイプの詳細については、「タイプhttps://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type」を参照してください。
注記
パラメータは任意のスコープで定義できます。ただし、コードのリファクタリング時に論理 ID が変更されないように、スタックレベルでパラメータを定義することをお勧めします。
パラメータを使用する
CfnParameter
インスタンスは、トークン を介してその値をCDKアプリケーションに公開します。すべてのトークンと同様に、パラメータのトークンは合成時に解決されます。ただし、具体的な値ではなく、 AWS CloudFormation テンプレートで定義された パラメータ (デプロイ時に解決されます) への参照が解決されます。
トークンは、Token
クラスのインスタンスとして取得することも、文字列、文字列リスト、または数値エンコーディングで取得することもできます。選択は、 パラメータを使用するクラスまたはメソッドに必要な値の種類によって異なります。
例えば、Bucket
定義で パラメータを使用するには、次のようにします。
パラメータを含むCDKアプリケーションをデプロイする
AWS CloudFormation コンソールから生成された AWS CloudFormation テンプレートをデプロイすると、各パラメータの値を指定するように求められます。
CDK CLI cdk deploy
コマンドを使用するか、CDKプロジェクトのスタックファイルでパラメータ値を指定して、パラメータ値を指定することもできます。
でパラメータ値を指定する cdk deploy
CDK CLI cdk deploy
コマンドを使用してデプロイする場合、 --parameters
オプションを使用してデプロイ時にパラメータ値を指定できます。
cdk deploy
コマンド構造の例を次に示します。
$
cdk deploy
stack-logical-id
--parametersstack-name
:parameter-name
=parameter-value
CDK アプリケーションに 1 つのスタックが含まれている場合は、スタックの論理 ID 引数や --parameters
オプション
の値を指定する必要はありません。CDK CLI はこれらの値を自動的に検索して提供します。以下は、CDKアプリケーション内の単一スタックの stack-name
uploadBucketName
パラメータuploadbucket
の値を指定する例です。
$
cdk deploy --parameters
uploadBucketName
=uploadbucket
マルチスタックアプリケーションの cdk デプロイでパラメータ値を指定する
以下は、2 つのCDKスタックを含む TypeScript のCDKアプリケーションの例です。各スタックには、Amazon S3 バケットインスタンスと、Amazon S3 バケット名を設定するためのパラメータが含まれています。
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as s3 from 'aws-cdk-lib/aws-s3'; // Define the CDK app const app = new cdk.App(); // First stack export class MyFirstStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Set a default parameter name const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', { type: 'String', default: 'myfirststackdefaultbucketname' }); // Define an S3 bucket new s3.Bucket(this, 'MyFirstBucket', { bucketName: bucketNameParam.valueAsString }); } } // Second stack export class MySecondStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Set a default parameter name const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', { type: 'String', default: 'mysecondstackdefaultbucketname' }); // Define an S3 bucket new s3.Bucket(this, 'MySecondBucket', { bucketName: bucketNameParam.valueAsString }); } } // Instantiate the stacks new MyFirstStack(app, 'MyFirstStack', { stackName: 'MyFirstDeployedStack', }); new MySecondStack(app, 'MySecondStack', { stackName: 'MySecondDeployedStack', });
複数のスタックを含むCDKアプリの場合、次のことができます。
-
パラメータを使用して 1 つのスタックをデプロイする – マルチスタックアプリケーションから 1 つのスタックをデプロイするには、スタックの論理 ID を引数として指定します。
以下は、 のパラメータ値
mynewbucketname
としてMySecondStack
をデプロイする例ですbucketNameParam
。$
cdk deploy
MySecondStack
--parametersbucketNameParam
='mynewbucketname'
-
すべてのスタックをデプロイし、各スタックのパラメータ値を指定する –
'*'
ワイルドカードまたはすべてのスタックをデプロイする--all
オプションを指定します。--parameters
オプションを 1 つのコマンドで複数回指定して、各スタックのパラメータ値を指定します。以下に例を示します。$
cdk deploy
'*'
--parametersMyFirstDeployedStack
:bucketNameParam
='mynewfirststackbucketname'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewsecondstackbucketname'
-
すべてのスタックをデプロイし、1 つのスタックのパラメータ値を指定する –
'*'
ワイルドカードまたはすべてのスタックをデプロイする--all
オプションを指定します。次に、--parameters
オプションで のパラメータを定義するスタックを指定します。以下は、CDKアプリケーション内のすべてのスタックをデプロイし、MySecondDeployedStack
AWS CloudFormation スタックのパラメータ値を指定する例です。他のすべてのスタックは、デフォルトのパラメータ値をデプロイして使用します。$
cdk deploy
'*'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
$
cdk deploy
--all
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
ネストされたスタックを持つアプリケーションcdk deployに でパラメータ値を指定する
ネストされたスタックを含むアプリケーションを操作するときCDKCLIの動作は、マルチスタックアプリケーションと似ています。主な違いは、ネストされたすべてのスタックをデプロイする場合は、 '**'
ワイルドカードを使用することです。'*'
ワイルドカードはすべてのスタックをデプロイしますが、ネストされたスタックはデプロイしません。'**'
ワイルドカードは、ネストされたスタックを含むすべてのスタックをデプロイします。
以下は、ネストされたスタックのパラメータ値を指定しながら、ネストされたスタックをデプロイする例です。
$
cdk deploy
'**'
--parametersMultiStackCdkApp/SecondStack
:bucketNameParam
='mysecondstackbucketname'
cdk deploy
コマンドオプションの詳細については、「」を参照してくださいcdk deploy。