選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 CloudFormation 參數取得 CloudFormation 值

焦點模式
使用 CloudFormation 參數取得 CloudFormation 值 - AWS Cloud Development Kit (AWS CDK) v2

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在部署時使用 AWS Cloud Development Kit (AWS CDK) 應用程式內的 AWS CloudFormation 參數,將自訂值輸入到合成的 CloudFormation 範本中。

如需說明,請參閱「參數和 AWS CDK」。

在 CDK 應用程式中定義參數

使用 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" });
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類別的執行個體,或在字串、字串清單或數字編碼中擷取。您的選擇取決於您要使用 參數的類別或方法所需的值類型。

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
getValueAsString() The token represented as a string
C#
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
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

例如,若要在Bucket定義中使用 參數:

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

部署包含參數的 CDK 應用程式

當您透過 AWS CloudFormation 主控台部署產生的 AWS CloudFormation 範本時,系統會提示您提供每個參數的值。

您也可以使用 CDK CLIcdk deploy命令提供參數值,或在 CDK 專案的堆疊檔案中指定參數值。

使用 提供參數值 cdk deploy

當您使用 CDK CLIcdk deploy命令部署 時,您可以在部署時提供 參數值與 --parameters選項。

以下是 cdk deploy命令結構的範例:

$ cdk deploy stack-logical-id --parameters stack-name:parameter-name=parameter-value

如果您的 CDK 應用程式包含單一堆疊,您不需要在 --parameters選項中提供堆疊邏輯 ID 引數或stack-name值。CDK CLI會自動尋找並提供這些值。以下是在我們的 CDK 應用程式中指定單一堆疊uploadBucketName參數uploadbucket值的範例:

$ cdk deploy --parameters uploadBucketName=uploadbucket

為多堆疊應用程式提供部署 cdk 的參數值

以下是 中TypeScript包含兩個 CDK 堆疊的範例 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 --parameters bucketNameParam='mynewbucketname'
  • 部署所有堆疊並為每個堆疊指定參數值 – 提供'*'萬用字元或部署所有堆疊--all的選項。在單一命令中多次提供 --parameters選項,以指定每個堆疊的參數值。以下是範例:

    $ cdk deploy '*' --parameters MyFirstDeployedStack:bucketNameParam='mynewfirststackbucketname' --parameters MySecondDeployedStack:bucketNameParam='mynewsecondstackbucketname'
  • 部署所有堆疊並指定單一堆疊的參數值 – 提供'*'萬用字元或部署所有堆疊--all的選項。然後,在 --parameters選項中指定要定義 參數的堆疊。以下是在 CDK 應用程式中部署所有堆疊並指定MySecondDeployedStack AWS CloudFormation 堆疊參數值的範例。所有其他堆疊將部署並使用預設參數值:

    $ cdk deploy '*' --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname' $ cdk deploy --all --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname'

cdk deploy 為具有巢狀堆疊的應用程式提供參數值

使用包含巢狀堆疊的應用程式時的 CDK CLI行為類似於多堆疊應用程式。主要差別是,如果您想要部署所有巢狀堆疊,請使用'**'萬用字元。'*' 萬用字元會部署所有堆疊,但不會部署巢狀堆疊。'**' 萬用字元會部署所有堆疊,包括巢狀堆疊。

以下是部署巢狀堆疊,同時指定一個巢狀堆疊的參數值的範例:

$ cdk deploy '**' --parameters MultiStackCdkApp/SecondStack:bucketNameParam='mysecondstackbucketname'

如需cdk deploy命令選項的詳細資訊,請參閱 cdk deploy

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。