2015-11-25 41 views
0

大家好,AWS S3帳戶ID不能滿足約束:錯誤代碼400 ValidationException

我使用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); 

我發現了以下情況例外:1個檢測驗證錯誤:

com.amazonaws.AmazonServiceException 值 'XXXX-XXXX-XXXX',在 '帳戶ID' 不能滿足約束: 會員必須滿足正則表達式模式:\ d +(服務: AmazonCognitoIdentity;狀態碼:400;錯誤代碼: ValidationException;請求ID:XXXXXXXX-XXXXXXXX-XXXX-XXXXXXXX)

但是,當我使用舊的AWS SDK時,我可以將文件上傳到S3。

回答

1

該帳戶ID僅包含數字。請刪除破折號。另一方面,CognitoCachingCredentialsProvider不再需要您的帳戶ID。它有一個簡化的構造函數,只需要您的Cognito池ID和區域。有關更多詳細信息,請參閱此博客Sync store access and simplified credentials provider

0

只是通過在服務構造的AccountID

相關問題