【问题标题】:AWS Amplify. Use existing resourcesAWS 放大。使用现有资源
【发布时间】:2020-01-01 20:44:13
【问题描述】:

我已按照教程进行操作:

https://aws-amplify.github.io/docs/android/start?ref=amplify-android-btn

将 AWS S3 与我的 android 应用程序集成。

我可以下载文件,一切正常。

我注意到,当我创建环境时,它会创建一个新存储桶,我不想创建新存储桶,我想使用现有存储桶。

我已尝试更改 awsconfiguration.json 中的存储桶。但它不起作用。

"S3TransferUtility": {
    "Default": {
        "Bucket": "somebucket",
        "Region": "us-east-1"
    }
}
AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: <ID>)

我不想创建新的存储桶,我希望能够访问在其他应用程序之间共享对象的 crated 存储桶。

【问题讨论】:

  • 您做了什么来修复“现有存储桶”上的AccessDenied 您如何使用正确的凭据进行测试,您可以访问该存储桶。
  • 我目前使用User GUEST从创建的bucket下载文件。
  • 请查看:aws.amazon.com/blogs/security/… 并且您链接的 AWS Amplify 演示使用 AWS Cognito 进行用户管理。您需要让 Cognito 访问“现有存储桶”,但这涉及有关 IAM 策略的教程。见:aws-amplify.github.io/docs/android/storage#storage-access
  • 嘿@MorrisonChang,我检查了您提供的链接,我在 Cognito 中创建了一个用户。在尝试下载文件之前,我先登录。用户登录后,我尝试下载文件,但它仍然返回 403。我的问题是,如何授予用户下载权限,或者我必须使用什么用户登录?

标签: android amazon-web-services amazon-s3 aws-amplify


【解决方案1】:

我解决了。对于任何有兴趣的人。

用于使用现有存储桶,无需使用放大创建环境。我唯一做的就是在raw 文件夹中手动添加文件awsconfiguration.json。我不使用放大。

所以,我的awsconfiguration.json 看起来像:

{
"Version": "1.0",
"IdentityManager": {
    "Default": {}
},
"CredentialsProvider": {
    "CognitoIdentity": {
        "Default": {
            "PoolId": "cognito-pool-id",
            "Region": "region"
        }
    }
},
"S3TransferUtility": {
    "Default": {
        "Bucket": "somebucket",
        "Region": "region"
    }
}
}

为了从 S3 下载对象,我将 TransferUtility 设为这样:

val transferUtility = TransferUtility.builder()
        .context(context)
        .awsConfiguration(AWSMobileClient.getInstance().configuration)
        .s3Client(getAmazonS3Client())
        .build()

private fun getAmazonS3Client(): AmazonS3Client{
    if (amazonS3Client == null) {
        amazonS3Client = AmazonS3Client(
                CognitoCachingCredentialsProvider(
                    context, 
                    BuildConfig.S3_POOL_ID, 
                    Regions.US_EAST_2
                ),
                Region.getRegion(Regions.US_EAST_2)
                )
    }

    return amazonS3Client!!
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2023-01-02
    • 2023-03-29
    • 1970-01-01
    • 2018-10-12
    • 2018-10-20
    • 2019-08-27
    相关资源
    最近更新 更多