1

尝试将图像上传到具有公共读取权限的 Amazon S3。

上传被拒绝:

使用 ACL 'PublicReadWrite'

_uploadRequest.ACL = AWSS3BucketCannedACLPublicReadWrite

上传成功:

使用 ACL “私有”

_uploadRequest.ACL = AWSS3BucketCannedACLPrivate

有什么解决办法吗?方向?



我的代码:

1. 设置证书

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
initWithRegionType:_regionType
identityPoolId:_pool_id];

2. 配置

AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc]initWithRegion:_regionType credentialsProvider:credentialsProvider];    
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

3. 创建上传请求

_uploadRequest = [AWSS3TransferManagerUploadRequest new];
_uploadRequest.ACL = AWSS3BucketCannedACLPublicReadWrite;

4. 启动传输管理器

AWSS3TransferManager * transferManager = [AWSS3TransferManager defaultS3TransferManager];
[[transferManager upload:_uploadRequest] continueWithExecutor:[AWSExecutor mainThreadExecutor] withBlock:^id(AWSTask * task) {


    return nil;
}];

  • 存储桶权限为读/写(适用于所有用户)

在此处输入图像描述

桶策略:

{
    "Version": "2012-10-17",
    "Id": "Policy14...5",
    "Statement": [
        {
            "Sid": "Stmt14.....5",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::myBucket/UsersUploads"
        }
    ]
}
4

1 回答 1

0

在“资源”行的末尾添加 *(在您的存储桶策略中)

arn:aws:s3:::{bucketName}/{Folder}/*
于 2017-06-11T23:13:29.540 回答