【问题标题】:Error in Yaml file while trying to create multiple s3 buckets in Serverless Framework for AWS Lambda Function尝试在无服务器框架中为 AWS Lambda 函数创建多个 s3 存储桶时,Yaml 文件出错
【发布时间】:2020-12-06 22:44:19
【问题描述】:

所以我对 CloudFormation 和无服务器框架都很陌生。我一直在尝试完成一些练习(例如自动缩略图生成器),然后创建一些简单的项目,我希望这些项目可以概括为我自己的目的。

现在我正在尝试创建一个堆栈/函数,它创建两个 S3 存储桶,并让 Lambda 函数从一个 CSV 文件中获取一个,执行一些简单的转换,然后将其放入另一个接收存储桶中。

在尝试建立我所做的练习时,我创建了一个包含以下代码的 Yaml 文件:

provider:
  name: aws
  runtime: python3.8
  region: us-east-1
  profile: serverless-admin
  timeout: 10
  memorySize: 128
  iamRoleStatements:
   - Effect: "Allow"
     Action:
       - "s3:*"
     Resource: "*"


custom:
  assets:
    targets:
    - bucket1: csvbucket1-08-16-2020
      pythonRequirements:
      dockerizePip: true
    - bucket2: csvbucket2-08-16-2020
      pythonRequirements:
      dockerizePip: true

functions:
  protomodel-readcsv:
    handler: handler.readindata
    events:
      s3:
      - bucket: ${self:custom.bucket1}
        event: s3:ObjectCreated:*
        suffix: .csv
      - bucket: ${self:custom.bucket2}
        

     

plugins:
  - serverless-python-requirements
  - serverless-s3-deploy

但是,当我从命令提示符执行无服务器部署时,我得到:

 Serverless Warning --------------------------------------

  A valid service attribute to satisfy the declaration 'self:custom.bucket1' could not be found.


 Serverless Warning --------------------------------------

  A valid service attribute to satisfy the declaration 'self:custom.bucket2' could not be found.


  Serverless Error ---------------------------------------

  Events for "protomodel-readcsv" must be an array, not an object

我试图通过添加一个 - 在 protohandler-readcsv: 中创建事件对象,但随后我得到一个糟糕的缩进错误,由于某种原因我无法协调。但是,更根本的是,我不确定为什么该项目无论如何都需要是一个数组,而且我也不清楚桶的警告。

很抱歉有一个关于这个的新手问题,但是在线运行教程/示例在尝试概括/自定义这些示例时需要尝试解决很多问题。

【问题讨论】:

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


    【解决方案1】:
    custom:
      assets:
        targets:
        - bucket1
    

    我猜你需要self:custom.assets.targets.bucket1,不确定这个嵌套资产是否可以工作。

    请检查下面的示例是否应该工作。

    service: MyService
    custom:
      deploymentBucket: s3_my_bucket
    
    provider:
      name: aws
      deploymentBucket: ${self:custom.deploymentBucket}
      stage: dev
    

    【讨论】:

    • 好的,所以我需要在提供程序部分添加该存储桶引用?然后添加多个存储桶,我将其作为一个数组来做?我使用缩略图重新调整大小的示例没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2021-12-05
    • 2020-02-08
    • 2022-06-11
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多