解析参数'--parameters'时出错:预期:'=',收到:'P'

时间:2019-09-02 05:51:45

标签: amazon-web-services amazon-cloudformation aws-cli

我正在使用AWS CLI Cloudformation。在将JSON参数文件与yml模板一起使用时,我不断收到错误消息。我尝试使用创建堆栈更新堆栈以及更改集。

Error parsing parameter '--parameters': Expected: '=', received: 'P' for input: 
- ParameterKey: FunctionName 
  ^ 
  ParameterValue: taskaplambda 
- ParameterKey: MemorySize 
  ParameterValue: 512 
- ParameterKey: Timeout 
  ParameterValue: 5 

我的命令是:

aws cloudformation update-stack --stack-name apstack --template-body file://templates/cflambdatemplate.yaml --parameters file://params/param.json

我的param.json是:

[
    {
        "ParameterKey": "FunctionName",
        "ParameterValue": "taskaplambda"
    },
    {
        "ParameterKey": "MemorySize",
        "ParameterValue": 512
    },
    {
        "ParameterKey": "Timeout",
        "ParameterValue": 5
    }
]

这是我的YAML文件

cflambdatemplate.yaml

Transform: AWS::Serverless-2016-10-31
Resources:
  tasklambda:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Ref FunctionName
      Handler: lambda_function.lambda_handler
      MemorySize: !Ref MemorySize
      Role:
        Fn::GetAtt: 
          - "tasklambdarole"
          - "Arn"
      Runtime: python3.7
      Timeout: !Ref Timeout
      CodeUri: 
        Bucket: taskapbucket
        Key: apbuild/lambda_function.zip

  tasklambdarole:
    Type: "AWS::IAM::Role"
    Properties: 
      AssumeRolePolicyDocument: 
        Version: "2012-10-17"
        Statement: 
          - 
            Effect: "Allow"
            Principal: 
              Service: 
                - "lambda.amazonaws.com"
            Action: 
              - "sts:AssumeRole"
      Path: "/"
  taskPolicies: 
    Type: "AWS::IAM::Policy"
    Properties: 
      PolicyName: "root"
      PolicyDocument: 
        Version: "2012-10-17"
        Statement: 
          - 
            Effect: "Allow"
            Action: "*"
            Resource: "*"
      Roles: 
        - 
          Ref: "tasklambdarole"

Parameters:
  FunctionName:
    Type: String
    MinLength: '3'
    MaxLength: '18'
  MemorySize:
    Type: Number
    MinValue: '128'
    MaxValue: '1024'
  Timeout:
    Type: Number
    MinValue: '1'
    MaxValue: '15'

我一直在尝试所有可能的方法,但是它一直给我一个错误。

1 个答案:

答案 0 :(得分:0)

只需能够通过AWS CLI创建所需的一切:

CLoudformation Stack

我正在使用相同的yaml文件和json参数模板,但未收到任何错误。以下是我在param.json中所做的唯一更改:

[
    {
        "ParameterKey": "FunctionName",
        "ParameterValue": "taskaplambda"
    },
    {
        "ParameterKey": "MemorySize",
        "ParameterValue": "512"
    },
    {
        "ParameterKey": "Timeout",
        "ParameterValue": "5"
    }
]

您需要将 Number 转换为 String ,这是因为CloudFormation参数类型未映射为JSON类型,因此CLI希望所有内容都以字符串形式传递。