AWS S3 accountId未能满足约束:错误代码400 ValidationException

时间:2015-11-25 05:05:13

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

  

大家好,

     

我使用AWS S3 SDK 2.2.8将图像上传到S3。我创造了   在S3控制台中铲斗。

     

我使用以下代码段代码上传文件。

String AWS_ACC_ID="XXXX-XXXX-XXX";
String AWS_POOL_ID="us-east-1:XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX";
String AWS_UNAUTH_ROLE="arn:aws:iam:XXXXXXX";
String AWS_AUTH_ROLE="arn:aws:iam:XXXXXXX";   

AWSCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
                            context, AWS_ACC_ID,
                            AWS_POOL_ID, AWS_UNAUTH_ROLE,
                            AWS_AUTH_ROLE, Regions.US_EAST_1);        

AmazonS3 s3Client = new AmazonS3Client(credentialsProvider);

PutObjectRequest putRequest = new PutObjectRequest(
                        AwsCredentials.AWS_BUCKET_NAME,
                        folderPath + file.getName(), file)
                        .withCannedAcl(CannedAccessControlList.PublicRead);

s3Client.putObject(putRequest);
  

我遇到了以下异常:

     

com.amazonaws.AmazonServiceException:检测到1个验证错误:   'accountId'的值'XXXX-XXXX-XXXX'未能满足约束条件:   会员必须满足正则表达式:\ d +(服务:   AmazonCognitoIdentity;状态代码:400;错误代码:   ValidationException;请求ID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX)

     

但是当我使用旧的AWS SDK时,我可以将文件上传到S3。

2 个答案:

答案 0 :(得分:1)

帐户ID仅包含数字。请删除破折号。

另一方面,CognitoCachingCredentialsProvider不再需要您的帐户ID。它有一个简化的构造函数,只接受您的Cognito池ID和区域。有关详细信息,请参阅此博客Sync store access and simplified credentials provider

答案 1 :(得分:0)

在服务构造函数中将 null 作为 accountId 传递