我想创建一个公共read aws s3存储桶,其中某些文件受IAM角色限制读取。
首先:
更多详细信息:
react应用程序很大,因此我使用const Dashboard = asyncComponent(() => import('./pages/Dashboard'))
之类的asyncComponent功能拆分了组件
因此,当我构建该应用程序时,它拥有一个大文件,而我拥有多个小文件。所有这些文件都在同一个存储桶中。
现在,我要构建管理页面。始终使用asyncComponent,我们会得到«Admin»文件的集合,并且它们托管在同一存储桶中。但是出于安全原因,我想将访问权限限制为具有特定IAM角色的身份验证用户(例如AdminRole)。
我查看了来自amplify config或来自CloudFormation的AWS :: S3 :: Bucket的许多文档,我看到了不同的事情告诉我这是可能的,但是我对此文档很迷失。
所以最后我问:
如何保护具有IAM角色的s3存储桶中的某些文件/对象以读取访问权限?
我该如何在react应用程序中“标记”管理组件?还是通过放大?也许使用正则表达式匹配文件?或指定的文件夹?为了应用此读取限制。
预先感谢您的答复。
答案 0 :(得分:0)
Amazon S3中的内容默认为私有。
因此,您可以通过存储桶策略(整个存储桶或存储桶的一部分)或通过访问控制列表( ACL)。
要投放应仅限于特定用户的内容,请利用预签名URL 。这些是限时URL,可提供对Amazon S3中私有对象的临时访问。它们很容易生成(不需要API调用)。
它的工作方式是:
<a>
和<img>
标签中使用它们来引用页面和图像。请参阅:Share an Object with Others - Amazon Simple Storage Service
(我不是Amplify人,所以我不能说Amplify如何专门生成/使用预签名URL。)