Amazon s3 如何以动态/编程方式将AWS S3 bucket上的文件夹访问权限授予特定应用程序用户
我们的应用程序在AWS S3 bucket上存储大量报告。 这些是以以下格式转储到S3存储桶中的html报告:Amazon s3 如何以动态/编程方式将AWS S3 bucket上的文件夹访问权限授予特定应用程序用户,amazon-s3,Amazon S3,我们的应用程序在AWS S3 bucket上存储大量报告。 这些是以以下格式转储到S3存储桶中的html报告: Report1/index.html /css/*.css /img/*.jpg Report1/subpage.html /css/* /img/* /JS/* Report2/index.html ... ... 有没有一种
Report1/index.html
/css/*.css
/img/*.jpg
Report1/subpage.html
/css/*
/img/*
/JS/*
Report2/index.html
...
...
有没有一种方法可以授予应用程序用户访问特定报表(比如“Report1”)的权限,这些报表可以直接在web上浏览
目前,我们正在为每个文件使用预签名URL,但是为报表文件夹中的每个文件生成预签名URL对于服务器来说是非常繁琐的。
还有其他方法吗?预签名URL是正确的方法。它们使应用程序能够首先确定是否允许用户访问,然后授予有时间限制的访问权。我将给出两个选项。它们之间的选择取决于用例的细节 选项1: 通过IAM为用户提供访问权限。这个用例的一个示例策略是
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/Report1/*"
}
]
}
选项2
使用html网页包插件
为每个报告创建一个Report1.html,然后使用预先签名的链接
就个人而言,我认为选项2更优雅,但选项1将更灵活一些。此外,选项1将需要使用IAM角色或用户,而选项2则不需要。您所说的“对于服务器来说单调乏味”是什么意思?你是说这会使服务器负担过重吗?只需要几行代码就可以生成一个预签名的URL。@JohnRotenstein我认为这个想法是可能有几十个文件需要预签名然后下载。OP似乎想要一个不需要下载文件本地副本的解决方案(从“网上直接浏览”推断)。@Mahesh您如何定义“用户”?他们是否拥有IAM用户凭据,或者是否通过您的web应用程序进行身份验证?@JohnRotenstein,身份验证是通过web应用程序完成的。仅供参考,这是一个aspnetcore webapp..@JohnRotenstein,“对服务器来说很乏味”-报告中的文件太多,需要创建和提供的签名URL太多。乔伊·基尔帕特里克的评论是正确的。谢谢。让我试试选项2,然后再联系你@乔伊·基尔帕特里克