我创建了一个AWS S3存储桶。我可以使用https://github.com/awslabs/aws-sdk-android-samples/blob/master/S3TransferUtilitySample/S3TransferUtilityTutorial.md访问存储桶,亚马逊提供的TransferUtility SDK应用程序。
我对各个Region和bucket名称的配置做了一些更改,然后我就能连接到S3了。
我有适当的权限来读/写服务器管理员提供给我的S3 Bucket。我使用代码成功将两个图像上传到S3存储桶。我现在可以看到S3中存在两个图像文件。
现在当我尝试下载这些文件时,我得到了
的例外com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 04800521FBB752B0)
我有读写权限,但仍然遇到此异常。它仅与许可有关,还是我遗漏了某些东西。
提前致谢。
答案 0 :(得分:3)
我认为还有其他下载权限。您需要设置谁可以下载此文件 - 阅读是不够的。右键单击S3存储桶中的文件并签出权限部分 - 您将在那里看到它。
答案 1 :(得分:0)
先前的conginto池ID存在问题,我认为它存在一些权限问题。
我们更改了cognito池ID,然后它正常工作。
答案 2 :(得分:0)
当请求不存在的密钥并且不允许请求者列出存储桶的内容时,Amazon S3将返回AccessDenied错误。
使用AWS开发工具包获取请求ID
以下部分包含使用AWS SDK配置日志记录的信息。虽然您可以在每个请求和响应上启用详细日志记录,但您不应在生产系统中启用日志记录,因为大型请求/响应可能会导致应用程序显着减慢。
<强>疑难解答强>
1)首先检查我的角色,你的权限,转到IAM并检查用户是否[访问密钥&amp;用于API的密钥具有使用基于S3的API的权限。
2确认您的访问密钥仍然可以访问S3资源和该存储桶。
3)通过使用AWS CL尝试相同的操作来验证。
4)使用AWS iam get-user命令显示当前用户,如果它的不同用户将收到此错误。
{ "User": { "UserName": "MY_DEFAULT_USER_NAME", "PasswordLastUsed": "2017-03-15T01:59:05Z", "CreateDate": "2016-04-30T02:46:19Z", "UserId": "ABCDEFGHIJKLMNOPQ", "Path": "/", "Arn": "arn:aws:iam::123456789:user/MY_DEFAULT_USER_NAME" } }
5)检查你的环境变量可能是我的环境变量中的AWS键是不同的。
6)对于AWS SDK故障排除请求,这对请求ID将类似于以下示例。
status Code: 403, AWS Service: Amazon S3, AWS Request ID: 79104EXAMPLEB723
AWS Error Code: AccessDenied AWS Error Message: Access Denied
S3 Extended Request ID: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km
7)检查代码中的终点是否正确,应该有一个正确的终点。