我可以在 AWS CloudFormation 启动 URL 中设置参数吗?

Can I set the parameters in an AWS CloudFormation launch URL?

我需要将我的用户指向他们需要 运行 的 cloudformation 堆栈,但我希望能够根据用户对其进行个性化设置。我读过 this,我想创建一个 URL,例如:

https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=SomeName&MyParam=blah&templateURL=https://s3.amazonaws.com/mytemplate.json

注意中间的"MyParam=blah"。用户仍然可以将参数更改为他们想要的任何参数,但我希望能够设置默认值。除了为每个用户编写自定义 Cloudformation 模板之外,还有其他想法吗?

[更新]:从 Jul 14 2017 开始,现在可以在提供给启动堆栈的 URL 查询参数中指定模板参数 URL。使用param_parameterName格式指定模板参数,例如:

https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/review?stackName=SomeName&param_MyParam=blah&templateURL=https://s3.amazonaws.com/mytemplate.json

有关完整详细信息,请参阅 Creating Quick-Create Links for Stacks


[原始答案,2017 年 2 月 10 日]

无法通过 AWS CloudFormation 启动直接预设默认参数 URL。 stackNametemplateURL 是仅有的两个由在此页面上执行的 JavaScript 代码解析的 URI 片段组件。

参考当前的CloudFormation Console JavaScript source来确认这一点,特别是CreateStackController使用的StackInfo对象中的parseRouteParams函数:

this.parseRouteParams = function(a) {
    a = _.reduce(a, function(a, b, d) {
        a[d] = decodeURIComponent(b);
        return a
    }, a);
    _.extend(this, _.pick(a, "stackName", "templateURL"))
}

这里有一些其他想法:

  • 编写一些 server-side 代码,根据提供的查询参数动态呈现 CloudFormation 模板中 属性 的 Default 值,将呈现的模板上传到 S3 存储桶,然后重定向到 create-stack 页面,将 URL 提供给 newly-rendered 模板。
  • 使用另一个接口 CreateStack API such as the AWS CLI create-stack,或构建您自己的 Web 接口以动态提供默认参数。
  • 编写一个扩展控制台页面的自定义用户脚本/浏览器扩展,以解析额外的 URI 片段参数并将正确的值直接注入控制台输入字段。
  • 要求 AWS 将对此功能的支持直接添加到他们的 URL 解析代码中。

您可以使用我们新的快速启动 URL 向 Cloudformation 控制台提供参数。它支持使用 param_Foo 语法的参数。

这里是示例APP的例子

https://eu-central-1.console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/create/review?templateURL=https://s3-eu-central-1.amazonaws.com/cloudformation-templates-eu-central-1/WordPress_Single_Instance.template&stackName=MyWPBlog&param_DBName=mywpblog&param_InstanceType=t2.medium&param_KeyName=MyKeyPairUSEast1

请注意,这在设计上不支持 No Echo 参数的深度链接。

更多信息:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stacks-quick-create-links.html