我正在尝试使用无服务器框架创建一个基本的 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
答案 0 :(得分:1)
基于评论。
问题中提供的 link 显示的是 CloudFormation (CFN) template,而不是 serverless framework template。虽然两者有相似之处,但它们不同。
问题中的代码是 CFN 和无服务器模板的混合,这使得它不能在两个系统中工作。
因此,要解决此问题,您必须检查并找到无服务器框架模板的 examples,而不是 CFN。然后将当前模板修改为有效的无服务器模板。