amazon-s3 - 尝试在无服务器框架中为 AWS Lambda 函数创建多个 s3 存储桶时,Yaml 文件出错
问题描述
所以我对 CloudFormation 和无服务器框架都很陌生。我一直在尝试完成一些练习(例如自动缩略图生成器),然后创建一些简单的项目,我希望这些项目可以概括用于我自己的目的。
现在我正在尝试创建一个堆栈/函数来创建两个 S3 存储桶,并让 Lambda 函数从一个 CSV 文件中获取一个 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: 中创建事件对象,但随后我得到一个糟糕的缩进错误,由于某种原因我无法协调。但是,更根本的是,我不确定为什么该项目无论如何都需要是一个数组,而且我也不清楚桶的警告。
很抱歉有一个关于这个的新手问题,但是在线运行教程/示例在尝试概括/定制这些示例时需要尝试找出很多东西。
解决方案
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
推荐阅读
- c# - 在 .NET Core 3.0 中使用登录
- mysql - 为什么 MariaDB 10.4.8(最新版)不能更改此列类型?
- sql - 为什么在 plpgsql 函数的循环中执行比在没有函数的情况下为每个循环独立执行要慢得多?
- c++ - 从 const ptr* 转换为 ptr* 的问题
- express - 在 Express API 中验证用户对资源的所有权?
- c++ - 聚合初始化,clang要我破坏我的代码?
- python - python中文件的标准偏差 - *更新*
- sql - 使用经典 ASP - SQL - JSON
- c# - 如何让我的删除方法接受空值?
- sql - 如何在 SQL 中有条件地用另一个日期替换一个日期?