无法使用 serverless.yml 创建 Lambda 和 Bucket

时间:2021-04-10 11:44:55

标签: amazon-s3 aws-lambda amazon-cloudformation serverless-framework

我正在尝试使用无服务器框架创建一个基本的 lambda 和一个 S3 存储桶。我从这篇文章中剪下了一小段代码:Enable Lambda function to an S3 bucket using cloudformation

# serverless.yml

service: MyTest
provider:
  name: aws
  runtime: python3.7
resources:
  Resources:
    Bucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: MyBucket12345
    MyFunc:
      Type: AWS::Lambda::Function
      Properties:
        Handler: handler.MyFunc


# handler.py

def MyFunc(event, context):
    print(event)

输出:

Serverless: Packaging service...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
CloudFormation - CREATE_IN_PROGRESS - AWS::CloudFormation::Stack - MyTest-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::BucketPolicy - ServerlessDeploymentBucketPolicy
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::BucketPolicy - ServerlessDeploymentBucketPolicy
CloudFormation - CREATE_COMPLETE - AWS::S3::BucketPolicy - ServerlessDeploymentBucketPolicy
CloudFormation - CREATE_COMPLETE - AWS::CloudFormation::Stack - MyTest-dev
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...

  Type Error ---------------------------------------------

  TypeError: Cannot set property 'S3Key' of undefined

1 个答案:

答案 0 :(得分:1)

基于评论。

问题中提供的 link 显示的是 CloudFormation (CFN) template,而不是 serverless framework template。虽然两者有相似之处,但它们不同

问题中的代码是 CFN 和无服务器模板的混合,这使得它不能在两个系统中工作。

因此,要解决此问题,您必须检查并找到无服务器框架模板的 examples,而不是 CFN。然后将当前模板修改为有效的无服务器模板。