当前位置: 首页 > 知识库问答 >
问题:

将多个参数从外部文件传递到cloudformation模板,并使用带有ref的值

魏鸿禧
2023-03-14

我在尝试使用以下cli命令创建cloudformation堆栈时遇到以下错误。

aws cloudformation create-stack --stack-name subodh-local-stack --template-url s3URL/template.json --parameters s3URL/params.json

错误:awscli.argprocess.Param错误:解析参数“--parameters”时出错:无法检索 https://s3.amazonaws.com///params.json:收到非 200 状态代码 403 2017-08-18 01:32:31,309 - 主线程 - awscli.clidriver - 调试 - 使用 rc 255 退出

模板.json

{
    "AWSTemplateFormatVersion": "2010-09-09",

    "Resources": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
            "FunctionName": {
                "Ref": "LambdaFunctionName"
            },
            "Handler": {
                "Ref": "LambdaHandler"
            },
            "Role": {
                "Ref": "LambdaExecutionRoleArn"
            },
            "Code": {
                "S3Bucket": {
                    "Ref": "LambdaSourceBucket"
                },
                "S3Key": {
                    "Ref": "LambdaSourceKey"
                }
            },
            "SubnetID": {
                "Ref": "LambdaSubnetID"
            },
            "Runtime": "nodejs4.3",
            "Timeout": "25",
            "MemorySize": "128",
            "VpcConfig": "vpc-2323454f",
            "securityGroupID": "sg-0sdfs17g"
        }
    }
}

params.json:

[
        {
            "ParameterKey": "LambdaFunctionName",
            "ParameterValue": "hello-world"
        },
        {
            "ParameterKey": "LambdaHandler",
            "ParameterValue": "index.handler"
        },
        {
            "ParameterKey": "LambdaExecutionRoleArn",
            "ParameterValue": "arn:aws:iam::312345678910:role/LambdaExecuteRole"
        },
        {
            "ParameterKey": "LambdaSourceBucket",
            "ParameterValue": "test-lambda-functions"
        },
        {
            "ParameterKey": "LambdaSourceKey",
            "ParameterValue": "helloworld.zip"
        },
        {
            "ParameterKey": "LambdaSubnetID",
            "ParameterValue": "subnet-1113121f,subnet-fer333ex"
        }
]

将命令更新为:

aws cloudformation create-stack --stack-name test-local-stack --template-body file://c:/cli/aws/template.json --parameters file://c:/cli/aws/params.json

我出错了

调用CreateStack操作时出错(ValidationError):模板格式错误:[/Resources/Type]资源定义格式不正确

我试图使用Ref函数来引用在堆栈创建期间从参数文件传递的参数。

有人可以让我知道我做错了什么吗?

共有2个答案

步博厚
2023-03-14

乍一看,问题与参数无关。错误消息是“模板格式错误:[/资源/类型] 资源定义格式不正确”,我认为这是错误的:

"Resources": {
  "Type": "AWS::Lambda::Function",
  ...
}

你想要的是:

"Resources": {
  "YourResourceName": { 
    "Type": "AWS::Lambda::Function",
    ...
  }
}
松刚豪
2023-03-14

对于任何其他正在研究如何将外部参数文件与CF模板一起使用并使用Ref调用值的人:

主模板将如下所示:

{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
    "LambdaFunctionName": {
        "Description": "Lambda Function name",
        "Type": "String"
    }
...},
"Resources": {
    "LambdaFunction": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
            "FunctionName": {
                "Ref": "LambdaFunctionName"
            }
        },
    ...}
}

}

参数json文件应如下所示:

[
    {
        "ParameterKey":"LambdaFunctionName",
        "ParameterValue":"hello-world"
    },
    ....
]

感谢@olpa引导我朝着正确的方向前进。

 类似资料:
  • 问题内容: 我想将两个数据对象传递给Go Template。一个是MongoDB查询结果,另一个是整数数组。 MongoDB查询: 我想通过以下代码发送“结果”和一个int数组 如果只有db结果,我们可以将其用作 在模板中,我们可以访问它{{.Name}}等(其中Name是[] User的结构字段) 请告诉我如何传递这些数据以及如何在模板中访问它们。 问题答案: 你可以仅通过一个单一的值,但该值可

  • 问题内容: 我想同时向我的模板渲染2样东西: 但是Playframework说,这是错误的。那么如何同时渲染2个值呢?我应该将它们保存到列表中吗?但是然后我必须再次将其解压缩到模板中。 请帮忙!感谢任何帮助! 问题答案: 2.0中的播放模板只是Scala函数,因此您需要在模板的开头(从第1行开始)声明params: 查看模板文档以获取详细信息 地图 另一方面,如果您需要传递大量相同类型的变量,那么

  • 问题内容: 在Go模板中,有时将正确的数据传递到正确的模板的方式令我感到尴尬。用流水线参数调用模板看起来就像只用一个参数调用函数。 假设我有一个Gophers网站,有关Gophers。它具有一个主页主模板和一个用于打印Gophers列表的实用程序模板。 http://play.golang.org/p/Jivy_WPh16 输出: 现在,我想在子模板中添加一些上下文:在列表内以不同的方式设置名称“

  • 问题内容: 通常,我会使用一个JavaScript文件,该文件需要在网页中定义某些变量。 所以代码是这样的: 但是我想做的是: 我尝试了不同的方法,最好的方法是解析查询字符串,如下所示: 然后搜索我的价值观。 我想知道是否还有另一种方法可以执行此操作而无需构建函数来解析我的字符串。 你们都知道其他方法吗? 问题答案: 如果可能,我建议不要使用全局变量。使用名称空间和OOP将参数传递给对象。 此代码

  • 我正在处理平台频道(PlatformChannels),试图从Kotlin(Kotlin)到Flatter(颤振)进行通信。尝试实际执行颤振平台频道文档中解释的操作,但方向相反: 通道文件颤振平台 其思想是从MainActivity上的ConfigureFlatterEngine函数调用颤振函数。kt级。 为此,我做了,在颤振方面,梅因。dart(颤振的默认示例): 从Kotlin方面来说,我只是

  • 我做了逻辑包,但是UI仍然有问题。我想做的是允许用户输入作业数量,在下一个窗口中,我想显示文本字段,他可以在其中输入每个作业的执行时间,换句话说,我应该显示文本字段n time,作为用户给定的作业数量。 这是我为第一个界面所做的: 这是我的控制器: 我不知道是否有方法将参数从控制器传递到FXML文件,并在FXML中执行循环。。请帮忙

  • 本文向大家介绍shell传参并将参数传递给sql文件的方法,包括了shell传参并将参数传递给sql文件的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 调用代码:   sh /tmp/t.sh 20160808  以上这篇shell传参并将参数传递给sql文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我正试图使用阿拉莫菲尔上传文件。使用文件()时,上传效果很好,但是,我似乎不知道如何使用选项? 这是我的测试: 我的状态代码是415? 此外,如何在上传中发送其他参数? 谢啦 编辑 我没有设置正确的内容类型: 仍然不知道如何发送附加参数随上传。