传入模板参数

时间:2018-12-06 22:15:14

标签: aws-cdk

我们正在考虑在我们的CI / CD管道中使用aws-cdk。我们需要能够在构建期间将参数传递到模板中,以便它可以生成在部署期间使用的工件。我看到我们可以使用cdk.json文件指定上下文属性,但这实际上并没有将值放入CloudFormation模板本身。只需让您可以在代码中访问它们。

我尝试过这样的事情:

const servicenameprop = new PipelinePrerequisitesProps();
servicenameprop.default = 'hello';
servicenameprop.type = 'String';

const serviceNameParameter = new Parameter(this, 'servicename', servicenameprop);
serviceNameParameter.value = new Token(servicename, 'servicename');

这会导致参数显示在CloudFormation仪表板选项卡中,但没有设置任何值,只有默认值。目前支持吗?如果没有,那么将来有计划吗?

2 个答案:

答案 0 :(得分:0)

CDK当前 不支持作为cdk deploy的一部分传递参数。如果要利用堆栈中的参数,至少到现在,您必须自己管理CloudFormation提交。例如,您可以将AWS CLI与运行cdk synth的结果一起使用(可以使用cdk synth -o <directory>)。

一般而言,我们鼓励创建尽可能具体的CDK堆栈。在“合成”时间将上下文直接传递到您的应用程序将使您可以对代码进行推理,并生成更简单,更可预测的模板(例如,您可以将资源放入模板中,而不是添加资源条件和具有条件的资源。

答案 1 :(得分:0)

随着CDK版本1.28.0的发布,现在可以将CloudFormation参数传递给2020-03-17T09:36:17.001+00:00命令。

deploy

这是一个简单的虚无堆栈:

public class ExampleApp {
    public static void main(final String[] args) {
        App app = new App();

        new ExampleStack(app, "ExampleStack");

        app.synth();
    }
}

您可以运行public class ExampleStack extends Stack { public ExampleStack(final Construct scope, final String id) { this(scope, id, null); } public ExampleStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); CfnParameter someVar = CfnParameter.Builder.create(this, "SomeVar") .description("Some variable that can be passed in at deploy-time.") .type("String") .build(); // rest of stack here } } 并将模板输出到某个地方,然后运行

cdk synth

,该参数将在部署时传递到堆栈中。