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

时间:2017-02-10 04:40:21

标签: amazon-web-services amazon-cloudformation

我需要将用户指向他们需要运行的云形式堆栈,但我希望能够根据用户对其进行个性化设置。我已阅读this,我想创建一个类似以下的网址:

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模板之外的任何想法吗?

2 个答案:

答案 0 :(得分:7)

[更新]:从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进行确认,特别是parseRouteParams使用的StackInfo对象中的CreateStackController功能:

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

以下是其他一些想法:

  • 编写一些服务器端代码,根据提供的查询参数在CloudFormation模板中动态呈现Property的Default值,将呈现的模板上传到S3存储桶,然后重定向到create-stack页面提供新渲染模板的URL。
  • 使用另一个CreateStack API接口,例如AWS CLI create-stack,或构建您自己的Web界面以动态提供默认参数。
  • 编写一个自定义用户脚本/浏览器扩展,扩展控制台页面以解析附加的URI片段参数,并将正确的值直接注入控制台输入字段。
  • 要求AWS将此功能的支持直接添加到其URL解析代码中。

答案 1 :(得分:3)

您可以使用我们新的快速启动网址为Cloudformation Console提供参数。它使用param_Foo语法支持参数。

以下是示例APP的示例

here

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

更多信息: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