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

Rya*_*ton 4 amazon-web-services aws-cloudformation

我需要将用户指向他们需要运行的cloudformation堆栈,但我希望能够根据用户对其进行个性化设置.我已经读过这篇文章了,我想创建一个像这样的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模板之外的任何想法?

wjo*_*dan 7

[ 更新 ]:自2017年7月14日起,现在可以在提供给启动堆栈URL的URL查询参数中指定模板参数.使用param_parameterName格式指定模板参数,例如:

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

有关完整详细信息,请参阅为堆栈创建快速创建链接.


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

无法通过AWS CloudFormation启动URL直接预设默认参数.stackName并且templateURL是在此页面上执行的JavaScript代码解析的唯一两个URI片段组件.

请参阅当前的CloudFormation控制台JavaScript源以确认这一点,特别是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"))
}
Run Code Online (Sandbox Code Playgroud)

以下是其他一些想法:

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