【问题标题】:AWS S3 accountId failed to satisfy constraint : Error Code 400 ValidationExceptionAWS S3 accountId 未能满足约束:错误代码 400 ValidationException
【发布时间】:2016-02-27 18:55:24
【问题描述】:

大家好,

我正在使用 AWS S3 SDK 2.2.8 将图像上传到 S3。我创造了 S3 控制台中的存储桶。

我正在使用以下 sn-p 代码上传文件。

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+(服务: 亚马逊认知身份;状态码:400;错误代码: 验证异常;请求 ID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX)

但是当我使用旧的 AWS 开发工具包时,我可以将文件上传到 S3。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-24
        相关资源
        最近更新 更多