我有2个AWS账户app-dev和app-prod都有存储桶 结构如下
流程如下:
./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会从其他帐户复制文件),因此我对此感到困惑。
我很确定我在这里错过了一些很小的东西。任何帮助将不胜感激。
答案 0 :(得分:2)
请注意,如果一个帐户将某个对象放入另一个帐户拥有的存储桶中,则该对象仍归发起者所有。发起者必须向该对象添加ACL,以授予存储桶所有者对该对象的访问权限。
有关更多详细信息,请参见here。
默认情况下,一个S3对象由上载该对象的AWS账户拥有。即使存储桶由另一个帐户拥有,也是如此。要访问该对象,对象所有者必须明确授予您(存储桶所有者)访问权限。
对象所有者可以通过更新对象的访问控制列表(ACL)来授予存储桶所有者对对象的完全控制权。对象所有者可以在放置或复制操作期间,也可以在将对象添加到存储桶之后更新ACL。