原因:无效的模板属性或属性[Api]

时间:2019-05-07 06:48:50

标签: aws-sam

在通过docker deploy_image之后,我发现:

  

等待创建变更集。

     

创建变更集失败:服务员ChangeSetCreateComplete失败:服务员遇到终端失败状态:失败。

我的模板怎么了?

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'testimg

  Sample SAM Template for testimg

  '
Globals:
  Function:
    Timeout: 60
Api:
  BinaryMediaTypes:
  - image/png
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: 
      Handler: app.lambda_handler
      Runtime: python3.6
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello
            Method: post

Outputs:
  HelloWorldApi:
    Description: API Gateway endpoint URL for Prod stage for Hello World function
    Value:
      Fn::Sub: https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/
  HelloWorldFunction:
    Description: Hello World Lambda Function ARN
    Value:
      Fn::GetAtt:
      - HelloWorldFunction
      - Arn
  HelloWorldFunctionIamRole:
    Description: Implicit IAM Role created for Hello World function
    Value:
      Fn::GetAtt:
      - HelloWorldFunctionRole
      - Arn

我希望它将在cloudformation中创建一个堆栈。

1 个答案:

答案 0 :(得分:0)

您的模板中存在两个问题:

  1. 模板的顶层具有密钥Api,SAM / CloudFormation无法识别。参见文档here。看起来您的缩进错误,而您的globals部分应该是:
Globals:
  Function:
    Timeout: 60
  Api:
    BinaryMediaTypes:
    - image/png
  1. 您的CodeUri字段为空。那应该是您的Python代码的本地路径,例如CodeUri: hello_world/

如果您解决了这些问题,则应进行部署。