【问题标题】:Can't create a Lambda and Bucket using serverless.yml无法使用 serverless.yml 创建 Lambda 和 Bucket
【发布时间】:2021-07-06 02:14:45
【问题描述】:

我正在尝试使用无服务器框架创建一个基本的 lambda 和一个 S3 存储桶。我从这篇文章中剪下了一个小代码sn-p: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

【问题讨论】:

  • 再看一遍,我的回答有误。很抱歉造成混乱。
  • Np。我已经粘贴了带有新错误的更新代码 sn-p
  • 您的链接指向 CloudFormation (CFN) 模板,而不是无服务器模板。 serverless 与 CFN 相关,但结构不同。您必须查找如何正确使用无服务器框架。我的错误是我也混淆了他们:-(
  • 哦..谢谢你
  • 如果您发表评论作为答案,我会接受

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


【解决方案1】:

基于 cmets。

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

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

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

【讨论】:

  • 另请注意,AWS 无服务器应用程序模型 (SAM) 与无服务器并不完全相同。 SAM 包含 CFN 模板的许多功能,而 Serverless 没有(否则非常相似)。一个必要的区别是 SAM 只能在 AWS 上运行,而 Serverless 则与平台无关。
猜你喜欢
  • 2017-06-25
  • 2019-09-04
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多