【问题标题】:Downloading a JSON file as an Unauthenticated user AWS/S3/Cognito以未经身份验证的用户 AWS/S3/Cognito 的身份下载 JSON 文件
【发布时间】:2018-05-29 04:05:47
【问题描述】:

我正在尝试下载一个 JSON 文件,该文件位于我的 AWS 账户的 S3 中的存储桶中。我创建了一个未经身份验证的认知池,并将其从示例代码复制到我的应用程序委托中:

    let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USWest2,
                                                            identityPoolId:"us-west-2:59a31a8f-ee6a-45fe-adaa-fa3eff871c80")

    let configuration = AWSServiceConfiguration(region:.USWest2, credentialsProvider:credentialsProvider)

    AWSServiceManager.default().defaultServiceConfiguration = configuration

在我的视图控制器中,我有以下代码:

    let transferManager = AWSS3TransferManager.default()
    let downloadingFileURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("db_storage/costdb_latest.json ")

    if let downloadRequest = AWSS3TransferManagerDownloadRequest(){
        downloadRequest.bucket = "coast-s3-bucket"
        downloadRequest.key = "db_storage/costdb_latest.json "
        downloadRequest.downloadingFileURL = downloadingFileURL


        transferManager.download(downloadRequest).continueWith(executor: AWSExecutor.default(), block: { (task: AWSTask<AnyObject>) -> Any? in
            if( task.error != nil){
                print(task.error!.localizedDescription)
                return nil
            }

            print(task.result!)

            if let data = NSData(contentsOf: downloadingFileURL){
                DispatchQueue.main.async(execute: { () -> Void in
                    print(data)
                })
            }
            return nil
        })
    }

bucket 和 pool 都在同一个区域。 USWest2(俄勒冈州)。我的存储桶是公开的,我已将 AmazonS3FullAccess 和 AmazonS3ReadOnlyAccess 添加到我的策略中。我收到了这个错误:

The operation couldn’t be completed. (com.amazonaws.AWSS3ErrorDomain error 4.)

【问题讨论】:

  • 您的意思是“未经身份验证”而不是“未经授权”?它们是非常不同的东西。

标签: swift amazon-s3 aws-sdk


【解决方案1】:

这不是身份验证/授权错误(我认为)。从外观上看,配置(区域、端点等)存在一些问题。通常,这些错误包含对问题的完整描述。尝试记录完整的错误消息。

另外,请参阅 this S3 TransferManager 的示例应用程序。使用您的 S3 和 Cognito 详细信息。如果这可行,则存在一些代码问题,您可以通过比较这两者来找出答案。如果这不起作用,则可能是服务问题。

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 2018-05-22
    • 2017-01-02
    • 2019-09-25
    • 2019-01-29
    • 2019-08-25
    • 2017-07-01
    • 2018-05-17
    相关资源
    最近更新 更多