這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 CloudFormation 參數取得 CloudFormation 值
使用 AWS Cloud Development Kit (AWS CDK) 應用程式內的 AWS CloudFormation 參數,在部署時將自訂值輸入您的合成 CloudFormation範本。
如需說明,請參閱「參數和 AWS CDK」。
在CDK應用程式中定義參數
使用 CfnParameter
類別定義 參數。您至少要指定大多數參數的類型和描述,雖然兩者在技術上都是選用的。當提示使用者在 AWS CloudFormation 主控台中輸入參數的值時,就會顯示描述。如需可用類型的詳細資訊,請參閱類型 。
注意
您可以在任何範圍內定義參數。不過,我們建議在堆疊層級定義參數,以便在重新建構程式碼時不會變更邏輯 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應用程式包含單一堆疊,則不必在 --parameters
選項中提供堆疊邏輯 ID 引數或
值。的 CDK CLI 會自動尋找並提供這些值。以下是在我們的CDK應用程式中指定單一堆疊stack-name
uploadBucketName
參數uploadbucket
值的範例:
$
cdk deploy --parameters
uploadBucketName
=uploadbucket
為多堆疊應用程式提供部署 cdk 的參數值
以下是 中的範例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的應用程式,您可以執行下列動作:
-
部署一個具有參數的堆疊 – 若要從多堆疊應用程式部署單一堆疊,請提供堆疊邏輯 ID 作為引數。
以下是
MySecondStack
使用 部署mynewbucketname
作為 參數值的範例bucketNameParam
:$
cdk deploy
MySecondStack
--parametersbucketNameParam
='mynewbucketname'
-
部署所有堆疊並為每個堆疊指定參數值 – 提供
'*'
萬用字元或部署所有堆疊--all
的選項。在單一命令中多次提供--parameters
選項,以指定每個堆疊的參數值。以下是範例:$
cdk deploy
'*'
--parametersMyFirstDeployedStack
:bucketNameParam
='mynewfirststackbucketname'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewsecondstackbucketname'
-
部署所有堆疊並指定單一堆疊的參數值 – 提供
'*'
萬用字元或部署所有堆疊--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。