これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Cloud Development Kit (AWS CDK) アプリケーション内の AWS CloudFormation パラメータを使用して、デプロイ時に合成された CloudFormation テンプレートにカスタム値を入力します。
概要については、「パラメータと AWS CDK」を参照してください。
CDK アプリでパラメータを定義する
CfnParameter
クラスを使用してパラメータを定義します。ほとんどのパラメータに少なくとも 1 つの型と説明を指定する必要がありますが、どちらも技術的には任意です。説明は、ユーザーが AWS CloudFormation コンソールにパラメータの値を入力するように求められたときに表示されます。使用できる型の詳細については、「型」を参照してください。
注記
任意のスコープでパラメータを定義できます。ただし、コードのリファクタリング時に論理 ID が変更されないように、スタックレベルでパラメータを定義することをお勧めします。
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
type: "String",
description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
パラメータの使用
CfnParameter
インスタンスは、トークンを介してその値を CDK アプリケーションに公開します。他のトークンと同様、パラメータのトークンは合成時に解決されます。ただし、具体的な値ではなく、 AWS CloudFormation テンプレートで定義されたパラメータ (デプロイ時に解決されます) への参照が解決されます。
トークンは、Token
クラスのインスタンスとして、または文字列、文字列リスト、または数値エンコーディングで取得できます。選択は、パラメータを使用するクラスまたはメソッドに必要な値の種類によって異なります。
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
の定義にパラメータを使用するには、以下のように行います。
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
{ bucketName: uploadBucketName.valueAsString});
パラメータを含む 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 つのスタックが含まれている場合、--parameters
オプションにスタックの論理 ID 引数または
の値を指定する必要はありません。CDK CLI がこれらの値を自動的に検出して指定します。以下は、CDK アプリケーションの 1 つのスタックの 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 を引数として指定します。
以下は、
bucketNameParam
のパラメータ値mynewbucketname
としてMySecondStack
をデプロイする場合の例です。$
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 でパラメータ値を指定する
ネストされたスタックを含むアプリケーションで作業する際の CDK CLI の動作は、マルチスタックアプリケーションに似ています。主な違いは、ネストされたすべてのスタックをデプロイする場合は、'**'
のワイルドカードを使用することです。'*'
のワイルドカードはすべてのスタックをデプロイしますが、ネストされたスタックはデプロイしません。'**'
のワイルドカードは、ネストされたスタックを含むすべてのスタックをデプロイします。
以下は、ネストされたスタックのパラメータ値を指定しながら、ネストされたスタックをデプロイする場合の例です。
$
cdk deploy
'**'
--parametersMultiStackCdkApp/SecondStack
:bucketNameParam
='mysecondstackbucketname'
cdk deploy
コマンドオプションの詳細については、「cdk deploy」を参照してください。