@ 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日誌中。
難道你不會說這個問題是這個問題的重複?如果是這樣,要做的事情就是將這個問題標記爲重複並提供到另一個的鏈接。這會讓問題排在更高的代表用戶的投票之上,以決定是否將一個問題作爲另一個問題的副本來結束。如果沒有,請幫我理解爲什麼不。這對我來說基本上是一樣的問題。 –