Amazon S3通过URL访问图片

52
我已经将一张图片上传到了亚马逊S3存储器,但是如何通过URL访问这张图片呢?我已经将文件夹和文件设置为公共,但是如果尝试通过URL访问仍然会出现AccessDenied错误。 https://s3.amazonaws.com/bucket/path/image.png
18个回答

1
我遇到了同样的问题。我的问题在于图片链接中的空格。我采取以下措施使其正常工作:
String imgUrl=prizes.get(position).getImagePreview().replaceAll("\\s","%20");

现在将此URL传递给Picasso:
Picasso.with(mContext)
            .load(imgUrl)
            .into(mImageView);

0

仅是对@akotian答案的补充,您可以通过以下方式点击对象来获取对象URL get object url

并且公开访问时,您可以在将对象上传到存储桶时通过编程方式设置ACL。

例如Java请求示例

PutObjectRequest putObjectRequest = PutObjectRequest.builder()
            .contentType(contentType)
            .bucket(LOGO_BUCKET_NAME)
            .key(LOGO_FOLDER_PREFIX+fileName)
            .acl(ObjectCannedACL.PUBLIC_READ)// this make public read
            .metadata(metadata)
            .build();

0
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        }
    ]
}

使用此策略来使该存储桶公开


0

添加存储桶策略对我有用

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::yourbucketname/*"
        }
    ]
}

0

要通过URL访问私有图像,您必须提供查询字符串身份验证。查询字符串身份验证版本4需要X-Amz-Algorithm、X-Amz-Credential、X-Amz-Signature、X-Amz-Date、X-Amz-SignedHeaders和X-Amz-Expires参数。


0

从您的存储桶内的权限选项卡中关闭阻止公共访问(存储桶设置)。您还需要编辑对象的权限。在Grantee Everyone(公共访问)上提供读取权限。然后勾选“我理解这些更改对此对象的影响。”并保存更改


0

尝试通过以下方式访问:

https://s3.amazonaws.com//file.format

或者打开文件并点击“打开”,这样它会将您重定向到正确的路径。


-5

更改您的存储桶... 可能会起作用


1
我认为,更换桶并不是一个解决方案。 - washiur17
1
这不是正确的答案。 - washiur17

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接