Amazon web services 如何知道哪个s3 bucket触发哪个lambda?

Amazon web services 如何知道哪个s3 bucket触发哪个lambda?,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,如何在不访问所有lambda的情况下知道哪个s3存储桶触发哪个lambda?在s3存储桶上设置触发器时,可以选择调用哪个lambda函数 有关详细信息,请查看此文档: 下面是一个更全面的文档,深入了解S3事件通知: 如果选择Lambda函数目标类型,请执行以下操作: 在Lambda函数中,键入或选择要从AmazonS3接收通知的Lambda函数的名称 如果在包含存储桶的区域中没有任何Lambda函数,系统将提示您输入Lambda函数ARN。在Lambda函数ARN中,键入要从AmazonS3接收

如何在不访问所有lambda的情况下知道哪个s3存储桶触发哪个lambda?

在s3存储桶上设置触发器时,可以选择调用哪个lambda函数

有关详细信息,请查看此文档:

下面是一个更全面的文档,深入了解S3事件通知:

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

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

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

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


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

有关详细信息,请查看此文档:

下面是一个更全面的文档,深入了解S3事件通知:

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

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

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

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


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

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函数上使用操作
lambda:InvokeFunction
的资源的arn。这可能有点困难,因为lambda的命令行选项要求您使用
aws lambda get policy
,以找出哪个允许资源对给定函数执行
lambda:InvokeFunction
操作。这些权限不作为
aws lambda get function configuration
的lambda配置的一部分显示。使用
bash
jq
获取函数列表并吐出它们允许的调用程序。像这样:

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函数上使用操作
lambda:InvokeFunction
的资源的arn。您可以在bucket事件本身下查看这些触发器。当您打开一个s3存储桶时,导航到属性,并在该事件下。但是,您可以删除或编辑从该面板触发的资源。希望它有帮助

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

@JohnRotenstein你能详细说明一下并告诉我步骤吗?因为我不知道在哪里可以看到触发器列表。因为我对AWS不太熟悉。转到S3控制台,单击您的bucket,转到Properties选项卡,单击Events。将显示bucket上的触发器列表。属性选项卡中没有事件。只有版本控制、服务器访问日志记录、静态网站托管、对象级日志记录和默认加密。向下滚动查看更多选项。@JohnRotenstein您能详细说明一下并告诉我步骤吗?因为我不知道在哪里可以看到触发器列表。因为我对AWS不太熟悉。转到S3控制台,单击您的bucket,转到Properties选项卡,单击Events。将显示bucket上的触发器列表。属性选项卡中没有事件。只有版本控制、服务器访问日志记录、静态网站托管、对象级日志记录和默认加密。向下滚动查看更多选项。现在称为“事件通知”,现在称为“事件通知”