访问被拒绝无法从AWS S3下载图像

时间:2018-12-07 12:05:17

标签: android swift amazon-web-services amazon-s3

我们有一个AWS账户,我们在其中使用S3存储桶来存储加密的图像(jpg)。此存储桶是“公开”的,虽然我们能够将所有图像成功上传到该存储桶,但在我们已上传/下载的约200-300张图像中,有1张似乎总是无法下载,并出现以下错误:

  

错误下载:可选(“ images / xxxxxxx / xxxxxxx.jpg”)错误:错误Domain = com.amazonaws.AWSServiceErrorDomain代码= 11“(null)” UserInfo = {HostId = xxxxxxx / xxxxxxx =,消息=访问被拒绝,代码= AccessDenied,RequestId = xxxxxxx}

此图像(下载失败)始终使用与所有其他图像相同的功能和参数上载,并以相同的方式下载。关于此图片的唯一独特之处在于,它是我们的应用程序(Android和iOS)中的个人资料照片,仅在其他地方使用。与成功下载的其他图片相比,此图片没有其他区别。

这个问题使我们对可能做错的事情感到困惑,如果有的话。我是AWS初学者。

1 个答案:

答案 0 :(得分:0)

您可能正在将图像上传到只读的存储桶中,只有管理员可以访问它。在提出要求之前将其添加:

s3PutObjectRequest.cannedACL = S3CannedACL.authenticatedRead()

这将授予您。将文件上传到私有存储区的权限

有很多原因导致访问被拒绝错误,例如,您可能忘记了此错误,将其添加到plist并为其提供适当的信息:

<dict>
<key>CredentialsProvider</key>
<dict>
    <key>CognitoIdentity</key>
    <dict>
        <key>Default</key>
        <dict>
            <key>PoolId</key>
            <string>"My poll ID string"</string>
            <key>Region</key>
            <string>"PoolID Resign"</string>
        </dict>
    </dict>
</dict>
<key>S3TransferManager</key>
<dict>
    <key>Default</key>
    <dict>
        <key>Region</key>
        <string>"PoolID Resign"</string>
    </dict>
</dict>