2017-02-10 55 views
3

我需要将用户指向他们需要运行的云信息堆栈,但我希望能够基于用户对其进行个性化设置。中间我可以在AWS 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 =嗒嗒”:我读过this,我想创建一个URL等。用户仍然可以将参数更改为任何他们想要的,但我希望能够设置默认值。任何想法,除了为每个用户编写自定义的Cloudformation模板?

回答

5

[更新]:从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")) 
} 

这里有一些其他的想法:

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

这就是我的想法。感谢您的彻底解答!我发现缩小了cloudformation的javascript源代码,但我无法挑选它在参数上做了什么。干得不错! –

2
相关问题