从参数文件读取创建更改集

时间:2019-04-15 16:20:41

标签: amazon-web-services amazon-cloudformation

问题 我正在运行create-change-set命令,该命令将查找参数文件,但出现CLI错误消息

代码

aws cloudformation create-change-set --stack-name  arn:aws:cloudformation:eu-west-1:xxxxxxxxxxxxxx:stack/JM-MachineLearning/0846dff0-5f91-11e9-8422-0a9391483dc6 --template-body packaged.yaml --parameters teststackupdate.json --change-set-name SampleChangeSet2 

错误消息

Parameter validation failed:
Invalid type for parameter Parameters[0].UsePreviousValue, value: true, type: <type 'unicode'>, valid types: <type 'bool'>
Invalid type for parameter Parameters[1].UsePreviousValue, value: true, type: <type 'unicode'>, valid types: <type 'bool'>
Invalid type for parameter Parameters[2].UsePreviousValue, value: true, type: <type 'unicode'>, valid types: <type 'bool'>
Invalid type for parameter Parameters[3].UsePreviousValue, value: true, type: <type 'unicode'>, valid types: <type 'bool'>
Invalid type for parameter Parameters[4].UsePreviousValue, value: true, type: <type 'unicode'>, valid types: <type 'bool'>

文件

cat teststackupdate.json
[
        {
                "ParameterKey": "DeploymentName",
                "UsePreviousValue": "true"
        },
        {
                "ParameterKey": "KinesisName",
                "UsePreviousValue": "true"
        },
        {
                "ParameterKey": "serverName",
                "UsePreviousValue": "true"
        },
        {
                "ParameterKey": "LambdaFunctionName",
                "UsePreviousValue": "true"
        },
        {
                "ParameterKey": "LambdaTimeout",
                "UsePreviousValue": "true"
        },
        {
                "ParameterKey": "payloadBucketName",
                "UsePreviousValue": "true"
        },
        {
                "ParameterKey": "nameTableEvent",
                "UsePreviousValue": "true"
        }
]

我正在尝试执行的操作,请更新AWS Cloudformation中的堆栈。 我通过SAM的CLI通过CLI创建了堆栈,然后融合为Cloudformation,然后进行了部署。

我确实通过CLI运行了命令,但这也没有用 ParameterKey = string,ParameterValue = string,UsePreviousValue = boolean,ResolvedValue = string

通过CLI运行参数

aws cloudformation create-change-set --stack-name arn:aws:cloudformation:eu-west-1:xxxxxxxxxxx:stack/JM-MachineLearning/0846dff0-5f91-11e9-8422-0a9391483dc6 --change-set-name SampleChangeSet2  --parameter LambdaFunctionName=MachineLearningMementoDynamoDBSaver nameTableEvent=MachineLearningEvent nameTableCountersEvent=MachineLearningCountersEventId nameTableCountersEventRowId=MachineLearningCountersEventRowId serverName=LambdaMachineLearning KinesisName=MachineLearningDataStream payloadBucketName=redcloud-machinelearning-6888/memento/error-payload --profile DEV  --region eu-west-1

Parameter validation failed:
Unknown parameter in Parameters[0]: "LambdaFunctionName", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
Unknown parameter in Parameters[1]: "nameTableEvent", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
Unknown parameter in Parameters[2]: "nameTableCountersEvent", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
Unknown parameter in Parameters[3]: "nameTableCountersEventRowId", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
Unknown parameter in Parameters[4]: "serverName", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
Unknown parameter in Parameters[5]: "KinesisName", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
Unknown parameter in Parameters[6]: "payloadBucketName", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue

任何建议都将适用。

我是Cloudformation / SAM的新手。

谢谢

1 个答案:

答案 0 :(得分:0)

编辑:经过深思熟虑,这可能不是您的问题-但请尝试查看错误是否更改。希望其他人可以提供更好的答案。

在您的teststackupdate.json中,您具有:

"UsePreviousValue": "true"

您的true用引号引起来,使其成为字符串。 错误告诉您它必须为布尔值,这是对/错。

取消所有“ true”的引用,使其看起来像:

"UsePreviousValue": true