当前位置: 首页 > 知识库问答 >
问题:

通过AWS S3/Lambda触发器传递有效载荷

闻人修明
2023-03-14

我是AWS平台的新手。我已经通过AWS CLI调用了lambda函数。

aws lambda invoke --function-name CFT ... --payload file://${DATA_TMP}/affl_ftp_config.json ${DATA_LOG}/outfile.txt

在这里,Payload是一个json文件

{
  "s3_bucket": "fanatics.dev.internal.confidential",
  ....
  "date": "20160813"
}

这个json文件被用作我的lambda处理程序中事件对象的一部分。

当上传S3文件并自动触发Lambda函数时,是否可以配置此行为?

例如,

我在一个S3_bucket中上传了一个文件,该文件将触发一个lambda函数,其json负载如上所示。

共有2个答案

郁隐水
2023-03-14

是的,你可以。S3是Lambda触发器之一。请在此处阅读更多详细信息

田晨
2023-03-14

不,你不能。

S3上传触发的Lambda函数提供有关新对象的信息(区域、bucket、密钥、版本id,如果bucket已版本化),但不提供对象负载。

请参阅记录在案的S3事件消息结构。这是S3调用的Lambda函数将接收的内容。

因此,S3事件调用的Lambda函数必须从S3中获取对象,才能访问负载。

因此,要么您现有的lambda函数需要修改,要么您需要一个新的lambda函数来响应事件、获取有效负载,然后调用原始函数。

另外请注意,如果这些事件是由现有对象的覆盖触发的,那么您将希望在bucket上启用版本控制,并且您将希望使用GetObjectVersion在事件中使用显式版本ID获取负载,因为GetObject(不指定版本)可能会在覆盖时返回过时数据。

 类似资料:
  • 问题内容: 我可以通过执行以下命令成功创建一个地方: 服务器返回。 现在,我想将有效负载存储在一个如下所示的JSON文件中: 所以我修改了要执行的命令,如下所示: 返回失败。为什么? 问题答案: 发送默认内容类型为的POST请求。如果要发送JSON请求,则必须指定正确的内容类型标头: 但这仅在服务器接受json输入的情况下有效。将在URL的末尾可能仅表明 输出 是JSON,这并不一定意味着它也将处

  • 我有一个Amazon Lambda实例和一个Amazon SNS实例。Lambda代码监视我们数据库中的变化,我希望它打电话给Amazon SNS,向我们的用户发送推送。例如: 当我们论坛上的用户收到新消息时,Lambda代码会在每次运行(每10分钟)时识别出这一变化,并应通过SNS向用户的智能手机发送推送。 说到文档,我遇到了麻烦;亚马逊的文档只讨论了如何通过SNS触发Lambda代码,而不是反

  • 我想知道是否可以使用API网关POST方法将YAML有效负载格式传递给AWS Lambda函数。我不想要任何有效载荷的模型,也不想使用模板检查有效载荷。我只想以YAML格式将数据传递给Lambda。有人成功地做到了这一点吗? 我之前使用JSON有效负载将有效负载传递给Lambda,但由于某些设计问题,我觉得YAML格式的有效负载更适合此任务。我尝试在请求正文中传递YAML有效负载,但出现以下错误。

  • 问题内容: 我正在使用 Citrus Framevork, 并有一些预测试步骤来获取身份验证令牌,然后在整个测试计划中使用它。而且,在这种情况下,您并不清楚如何使用 TestContext 以及如何访问var。通过几个testIT类: GetTokenIT.java: 该部分仅在GetTokenIT.class中可以正常工作。如何在nex测试步骤中传递/调用可变 令牌 ? GetClientIdI

  • 我通过jira触发器插件将jenkins作业设置为触发器<但是jenkins作业没有被触发,尽管它从JIRA那里获得了webhook事件。 我检查了如下内容。 Jenkins得到了网络钩子事件。我在詹金斯日志上检查了这个。 我试着为詹金斯设置各种方式,但都失败了。我想知道如何设置jira触发器 > 测试环境 吉拉:6.4.11 我的测试用例是。。。 Jenkins工作设置 选中:向JIRA添加注释

  • 我正在AWS-Lambda上基于以下教程运行一个flask-appi/blog/180412-deploy-flask-api-any-serverless-cloud-platform/#create-flask-app 我现在的问题是,这个设置对于定义的home-path(“/”)来说完全可以工作,但是每当我调用例如“/user/7”时,API-Gatway返回403,因为它不知道路由,尽管它