Amazon s3 如何以动态/编程方式将AWS S3 bucket上的文件夹访问权限授予特定应用程序用户

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 ... ... 有没有一种

我们的应用程序在AWS S3 bucket上存储大量报告。 这些是以以下格式转储到S3存储桶中的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,然后再联系你@乔伊·基尔帕特里克