Amazon S3 上传访问被拒绝
Posted
技术标签:
【中文标题】Amazon S3 上传访问被拒绝【英文标题】:Amazon S3 upload Access Denied 【发布时间】:2016-05-16 18:51:23 【问题描述】:我多年来一直坚持这一点。我看到其他人也有同样的问题,但我无法解决。
我正在开发一个 android 应用程序,该应用程序从相机拍摄照片,并将其上传到 Amazon S3 上的存储桶中。这是我的代码:
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(), /* get the context for the application */
"MY_POOL_ID", /* Identity Pool ID */
Regions.US_EAST_1 /* Region for your identity pool--US_EAST_1 or EU_WEST_1*/
);
// Create an S3 client
AmazonS3 s3 = new AmazonS3Client(credentialsProvider);
s3.setRegion(Region.getRegion(Regions.US_EAST_1));
TransferUtility transferUtility = new TransferUtility(s3, getApplicationContext());
TransferObserver observer = transferUtility.upload(
MY_BUCKET, /* The bucket to upload to */
OBJECT_KEY, /* The key for the uploaded object */
f /* The file where the data to upload exists */
);
我创建了一个存储桶。文件f
,我将相机中的位图转换为文件。我的泳池 ID 有效,如果我更改它,我会收到错误 pool not found
;与桶相同。但是,每次我尝试上传时都会收到此错误:
上传失败:11 由于拒绝访问(服务:Amazon S3;状态 代码:403;错误代码:拒绝访问;请求 ID:FD1B30F)
我是 Amazon S3 的初学者,我一次又一次地按照他们的指示进行操作,但我无法解决这个问题。
我在清单中有这个:
<service
android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
android:enabled="true" />
以及正确的权限。
我需要做什么来纠正这个问题?
【问题讨论】:
完整的错误信息是什么? 也许你想试试这里的例子:***.com/questions/27096717/… 【参考方案1】:检查您的存储桶权限,尝试完全打开它,看看您是否能够通过 Android 的 SDK 访问它。
查看 AWS 提供的策略生成器来帮助您:
http://awspolicygen.s3.amazonaws.com/policygen.html
【讨论】:
我试过这个。制定了允许任何人读写的策略,但仍然不起作用。【参考方案2】:我的问题的答案是,当我在我的设备 Nexus 5 上测试我的应用程序时发生了这个问题。当我使用模拟器 (Genymotion) 时,它可以工作。但是为什么它不能在我不知道的真实设备上工作。
【讨论】:
这绝对不是答案。 它可能不是一个完整的答案,但我认为它很好地提供了寻找答案的地方。如果您能提供更多帮助,请告诉我。 也许你应该把它合并到你的问题中,并说你可以在模拟器下做到这一点。但是,细节仍然太少。以上是关于Amazon S3 上传访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Amazon Cloudfront 签名 URL 访问被拒绝问题
AWS Lambda - 访问被拒绝错误 - GetObject