首页 > 解决方案 > AWS 放大。使用现有资源

问题描述

我已按照教程进行操作:

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 存储桶。

标签: androidamazon-web-servicesamazon-s3aws-amplify

解决方案


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

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

所以,我的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!!
}

推荐阅读