如何知道哪个s3桶触发哪个lambda?

时间:2018-05-29 14:44:23

标签: amazon-web-services amazon-s3 aws-lambda

如何知道哪个s3存储桶触发哪个lambda而没有去所有lambdas?

3 个答案:

答案 0 :(得分:1)

您可以在存储桶事件本身下查看这些触发器。打开 s3存储桶时,导航至属性,并在该事件下。但是,您可以删除或编辑从该面板触发的资源。希望对您有帮助

答案 1 :(得分:0)

在S3 Bucket上设置触发器时,可以选择调用哪个Lambda函数。

查看此文档以获取更多信息:https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

这是一个更全面的文档,深入探讨了S3事件通知:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-event-notifications.html

  

如果选择Lambda Function目标类型,请执行以下操作:

     

在Lambda Function中,键入或选择要从Amazon S3接收通知的Lambda函数的名称。

     

如果您在包含存储桶的区域中没有任何Lambda函数,系统将提示您输入Lambda函数ARN。在Lambda Function ARN中,键入要从Amazon S3接收通知的Lambda函数的ARN。

     

(可选)您也可以从菜单中选择Add Lambda function ARN,并在Lambda函数ARN中键入Lambda函数的ARN。

答案 2 :(得分:0)

这可能有点困难,因为Lambda的命令行选项要求您使用aws lambda get-policy以找出允许哪些资源对给定函数执行lambda:InvokeFunction操作。这些权限不会显示为aws lambda get-function-configuration的lambda配置的一部分。您可以使用一些bashjq来获取函数列表并吐出允许的调用者。像这样:

aws lambda list-functions | jq .Functions[].FunctionName --raw-output | while read f; do
  policy=$( aws lambda get-policy --function-name ${f} | jq '.Policy | fromjson | .Statement[] | select(.Effect=="Allow") | select(.Action=="lambda:InvokeFunction") | .Condition.ArnLike[]' --raw-output )
  echo "FUNCTION ${f} CAN BE INVOKED FROM:"
  echo ${policy}
done

这将列出允许在lambda:InvokeFunction返回的所有Lambda函数上使用操作list-functions的资源的arn。