如何使用 AWS Amplify 和 Cognito 管理将图像上传到 S3 的用户授权?
How to manage User authorization to upload images to S3 using AWS Amplify and Cognito?
我已经创建了 UserPool 和 Identity Pools,并成功地执行了 Signup 和 SignIn。但是当我尝试访问 S3 以上传图像时,我收到以下错误。
错误:
com.amazonaws.services.s3.model.AmazonS3Exception:拒绝访问(服务:null;状态代码:403;错误代码:AccessDenied;
这是导致错误的代码片段。
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"MY_Identity_Pool_ID", // Identity pool ID
Regions.MY_Region// Region
);
TransferUtility transferUtility =
TransferUtility.builder()
.context(getApplicationContext())
.awsConfiguration(AWSMobileClient.getInstance().getConfiguration())
.s3Client(new AmazonS3Client(credentialsProvider, Region.getRegion(Regions.AP_SOUTH_1)))
.build();
Log.d("imagepath", images.get(0).getPath());
TransferObserver uploadObserver =
transferUtility.upload(
"apples.jpeg",
new File(images.get(0).getPath()));
我通过向 IAM 中的授权角色提供 S3 访问策略来解决它。
我已经创建了 UserPool 和 Identity Pools,并成功地执行了 Signup 和 SignIn。但是当我尝试访问 S3 以上传图像时,我收到以下错误。
错误: com.amazonaws.services.s3.model.AmazonS3Exception:拒绝访问(服务:null;状态代码:403;错误代码:AccessDenied;
这是导致错误的代码片段。
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"MY_Identity_Pool_ID", // Identity pool ID
Regions.MY_Region// Region
);
TransferUtility transferUtility =
TransferUtility.builder()
.context(getApplicationContext())
.awsConfiguration(AWSMobileClient.getInstance().getConfiguration())
.s3Client(new AmazonS3Client(credentialsProvider, Region.getRegion(Regions.AP_SOUTH_1)))
.build();
Log.d("imagepath", images.get(0).getPath());
TransferObserver uploadObserver =
transferUtility.upload(
"apples.jpeg",
new File(images.get(0).getPath()));
我通过向 IAM 中的授权角色提供 S3 访问策略来解决它。