我无法将参数加载到python boto3 Cloudformation客户端。在
下面是我的参数文件:
[
{"ParameterKey": "pVpcId", "ParameterValue": "vpc-XXXXXX"},
{"ParameterKey": "pContact", "ParameterValue": "XDXDXX"},
{"ParameterKey": "pCC", "ParameterValue": "XXXXX" },
{"ParameterKey": "pFormat", "ParameterValue": "True"}
]
我按以下方式将其加载到程序中:
^{pr2}$当我用Cloudformation建立一个boto3客户机并调用它时,我得到下面描述的错误。调用在没有参数的情况下工作,因此它肯定与参数文件有关。在
Traceback (most recent call last):
File "cf_create_stack", line 85, in <module>
Parameters=parameters
File "/usr/lib/python2.7/site-packages/botocore/client.py", line 357, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.7/site-packages/botocore/client.py", line 661, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the CreateStack operation: Template format error: unsupported structure.
我是如何解决这个问题的:
为了加载参数文件(作为字典列表加载),我有以下代码:
打开(参数_文件)为f: 参数=json.load文件(六)
对于l in参数: l['UsePreviousValue']=eval('False')
为了传递Cloudformation模板,我使用了以下代码(基本上以字符串形式读取):
打开(cloudformation_模板)为g: template_body=g.read()
最后,我将这两个变量传递给cloudformation客户机:
对我来说,出问题的地方是boto3'Cloudformation'客户机需要一个'listofdictionaries'作为参数,但是对Cloudformation模板需要一个'string'。在
这是非常令人沮丧的,我正试图找到一种方法,以提高这一点的AWS。在
我相信基于您提供的代码示例,您不可能得到这样的响应。在
我想你可能试过}?在
TemplateBody
而不是{要重现错误消息,请尝试以下简单示例:
如果将参数文件和模板放在预期的位置并运行此程序,则应该会看到您看到的确切错误消息:
^{pr2}$请注意,此错误:
来自AWS API,不是Boto3。在
将file:// URI或URL传递到TemplateBody参数时会导致此错误。在
此外,我相信如果您真的向TemplateURL传递了任何信息,就不可能得到这样的响应。在
另请参见:
因此TemplateBody参数需要CloudFormation模板文件的content/str,而不仅仅是文件名。在
以下各项应能令人满意地工作。在
相关问题 更多 >
编程相关推荐