AWS S3使用AWS Lambda跨多个帐户复制并触发内部Lambda复制到其他存储桶

时间:2019-10-23 11:33:58

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

我有2个AWS账户app-dev和app-prod都有存储桶 结构如下

enter image description here

流程如下:

./db/*

如果我使用AWS控制台将文件从同一帐户手动复制到app-prod(Account)-->bucket-prod-->copier-lambda-->app-dev(account)-->bucket-dev-->copier-lambda-->[bucket-dev1, bucket-dev2] ,则app-dev帐户中的复印机lambda可以正常工作。但是,当来自帐户bucket-dev的复印机lambda将文件复制到app-prod时,来自帐户bucket-dev(app-dev)的复印机lambda被触发,但失败,并出现app-dev错误和"Access Denied"在这两种情况下,lambda都是相同的(手动复制的文件会触发同一帐户中的复印机lambda,而lambda会从其他帐户复制文件),因此我对此感到困惑。

我很确定我在这里错过了一些很小的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

请注意,如果一个帐户将某个对象放入另一个帐户拥有的存储桶中,则该对象仍归发起者所有。发起者必须向该对象添加ACL,以授予存储桶所有者对该对象的访问权限。

有关更多详细信息,请参见here

  

默认情况下,一个S3对象由上载该对象的AWS账户拥有。即使存储桶由另一个帐户拥有,也是如此。要访问该对象,对象所有者必须明确授予您(存储桶所有者)访问权限。

     

对象所有者可以通过更新对象的访问控制列表(ACL)来授予存储桶所有者对对象的完全控制权。对象所有者可以在放置或复制操作期间,也可以在将对象添加到存储桶之后更新ACL。