【问题标题】:Can I set the parameters in an AWS CloudFormation launch URL?我可以在 AWS CloudFormation 启动 URL 中设置参数吗?
【发布时间】:2017-06-28 08:16:53
【问题描述】:

我需要将我的用户指向他们需要运行的 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 模板之外,还有什么想法吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:
    【解决方案2】:

    [更新]:从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来确认,具体是StackInfo对象中CreateStackController使用的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 模板中动态呈现属性的 Default 值,将呈现的模板上传到 S3 存储桶,然后重定向到提供新呈现的模板的 URL。
    • 使用 CreateStack API 的另一个接口,例如 AWS CLI create-stack,或构建您自己的 Web 界面以动态提供默认参数。
    • 编写自定义用户脚本/浏览器扩展,扩展控制台页面以解析额外的 URI 片段参数,并将正确的值直接注入控制台输入字段。
    • 要求 AWS 将对此功能的支持直接添加到其 URL 解析代码中。

    【讨论】:

    • 这就是我的想法。感谢您的详尽回答!我发现了缩小的 cloudformation javascript 源,但我无法挑选出它对参数所做的部分。干得好!
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2018-08-15
    • 2020-02-12
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多