@ John's Solution的工作原理,但我想在他的答案中增加一些步骤。
- 的S3桶和LAMBDA需要在同一个区域中。例如,两者都应在
us-east-1
区域创建。不同的地区会抛出如下的错误:
通知目的地的服务区域是无效的段位置约束
下面是我跟着创建触发器的步骤:
Account-A.S3-bucket -> Account-B.Lambda-function
- 从终端切换到帐户B的AWS配置文件,其中Lambda将驻留
运行下面的命令,修改参数的情况下:
aws lambda add-permission \ --region {Account-B.Lambda region Eg. us-east-1} \ --function-name {Account-B.Lambda name} \ --statement-id 1 \ --principal s3.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::{Account-A.S3 name} \ --source-account {Account-A.account-id} \ --profile {Account-B.profile-name}
你可能会得到声明-ID在这种情况下再存在错误,增量声明-ID,并重新运行命令。
- 转到
Account-A
的S3桶和下属性的标签>下活动
- 选择添加通知
添加以下字段:
Name: ObjectCreation Events: ObjectCreate (All) Send to: Lambda function Lambda: Add Lambda function ARN Lambda function ARN: your-lambda-arn
注意:Lambda函数可能仍会显示错误,但在S3存储桶中添加的新对象会触发lambda和print(事件)日志出现在Cloudwatch日志中。
难道你不会说这个问题是这个问题的重复?如果是这样,要做的事情就是将这个问题标记为重复并提供到另一个的链接。这会让问题排在更高的代表用户的投票之上,以决定是否将一个问题作为另一个问题的副本来结束。如果没有,请帮我理解为什么不。这对我来说基本上是一样的问题。 –