您如何通过Java SDK确定对AWS S3的权限?

Dasmowenator:

我知道您可以尝试通过Java SDK读取ACL或存储桶策略,但是有什么简单的方法可以仅检查您是否具有存储桶和/或其内容的读取和/或写入权限?我没有看到任何“ haveReadPermissions()”方法或AmazonS3类中的任何内容,但是也许我遗漏了一些东西?我发现很难相信没有简单的方法来检查权限。

Dasmowenator:

我认为答案是,目前还没有万无一失的方法,至少目前还没有。您可以使用其他几种方法来解决此问题。我最初尝试使用getBucketLocation()方法来确定我的给定用户是否具有对存储桶的读取访问权限,但事实证明您必须是存储桶的所有者才能使用此方法...因此不起作用。

对于读取访问,还有另一种可以使用的技巧。只需使用类似的东西getObject(bucketName, UUID.randomUUID().toString())-这将引发异常,因为您试图获取不存在的密钥。捕获AmazonServiceException(或AmazonS3Exception)并检查是否e.getErrorCode()等于"NoSuchKey"如果是这种情况,则您对存储桶具有读取权限。如果是其他任何错误代码,则说明您无权访问,或者存储桶不存在,等等(可能有很多东西)。确保您明确检查ErrorCode 而不是 StatusCode,因为如果存储桶不存在,您还将获得404 StatusCode(这与密钥不存在时获得的StatusCode相同)。这是S3错误/状态代码的完整列表:http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html

对于写访问,并不是那么简单。最好的方法是实际上将一个小的测试文件写入存储桶(然后尝试删除它)。除此之外,如果您想检查更多通用权​​限,则使用PutObjectAcl之类的方法将确定您的用户是否具有"s3:Put*"权限(您可以先读取ACL并将其设置为与当前ACL完全相同,然后再使用该ACL进行设置)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过AWS PHP SDK向IAM用户授予对AWS S3文件的权限

如何确定对象是否存在AWS S3 Node.JS SDK

AWS:无法通过s3存储桶策略授予s3访问权限

您如何允许授予对上载到AWS S3的对象的公共读取访问权限?

如何通过aws Java SDK公开S3对象?

如何使用 PHP SDK 创建具有 S3 完全访问权限的编程访问权限的 IAM 用户

如何确定公共AWS S3存储桶的区域?

无需访问权限和Java密钥即可进行AWS S3上传

如何使用cli查找/检查AWS S3中的当前权限?

如何使用aws cli设置S3存储桶中文件的权限?

如何更新AWS S3对象的ACL访问权限?

如何授予AWS用户访问s3存储桶托管的网站的权限?

在AWS S3中,如果文件已经存在,我如何授予账户权限

如何自动化AWS s3存储桶对象的权限

如何为AWS和CF用户分配对S3存储桶的访问权限?

如何使用AWS s3或AWS s3api递归更改权限到文件夹

AWS S3 对象权限

AWS S3 CloudFormation 只读权限

AWS S3 Java SDK-拒绝访问

AWS Java SDK 2 S3复制对象

如何使用AWS S3 SDK复制多个文件

AWS S3 + Ruby SDK:如何列出存储桶

通过 AWS-Java SDK 为浏览器签署 S3 上传请求

如何在授予公共访问权限的情况下将文件上传到AWS S3?

如何使用IAM策略AWS仅向S3存储桶的根帐户用户授予访问权限?

您如何使用SDK创建指向S3(静态托管)网站终端节点的AWS Cloudfront分布?

通过 AWS SDK 从 AWS S3 存储桶下载文件会损坏文件

AWS:S3 存储桶 AWS 您无法授予公共访问权限,因为此帐户已启用阻止公共访问设置

aws s3 sdk您尝试创建的存储桶超出允许的范围