我从我的应用程序访问我的aws S3服务器存储桶时遇到问题 . 我在存储桶日志文件中收到请求,但访问被拒绝 . 我有内联策略和托管策略允许完全访问服务器,以及设置服务器权限以允许每个人,但它仍然说访问被拒绝 . 也创建了右池的标识 . 在应用程序结束时,我收到一条消息,表明找不到存储桶 . 服务器区域是伦敦 .
我已经阅读了很多关于这个问题的其他问题,但没有一个能解决我的问题 .
谢谢
内联未经身份验证的IAM策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1488834891000",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::ascentserver/*"
]
}
]
}
由于某种原因,这在策略模拟器上不起作用,我尝试为存储桶和服务添加资源,没有帮助 .
托管策略是默认的S3完全访问权限并模拟为正常工作 .
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
寻址服务器的代码片段:
public void setFileToUpload(){
TransferObserver transferObserver = transferUtility.upload(
"http://ascentserver.s3.eu-west-2.amazonaws.com", /* The bucket to upload to */
"TEST.png", /* The key for the uploaded object */
fileToUpload /* The file where the data to upload exists */
);
transferObserverListener(transferObserver);
}
2 回答
您需要为
transferUtility.upload()
方法提供桶名称ascentserver
而不是http://ascentserver.s3.eu-west-2.amazonaws.com
,并确保AmazonS3Client
使用正确的区域而不是默认区域,方法是将 endpoints 显式设置为s3.setEndpoint("s3.eu-west-2.amazonaws.com")
.例如:
所以我们使用的代码如下:注意这些只是片段,而不是整个代码
[主要]
[依赖性]
[表现]