这个错误通常是由于AWS认证凭据没有正确配置或使用错误区域引起的。建议检查您使用的AWS凭据是否正确,并确保您在请求S3 API时使用正确的区域。
以下是一个示例代码,演示如何使用AWS SDK for Java在正确的区域(US_EAST_1)请求S3 API:
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.S3Object;
public class S3Sample {
public static void main(String[] args) throws Exception {
String bucketName = "***bucket-name***";
String key = "***object-key***";
String filePath = "***file-path***";
Region region = Region.getRegion(Regions.US_EAST_1);
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new ProfileCredentialsProvider())
.build();
try {
System.out.println("Uploading a new object to S3 from a file\n");
s3client.putObject(new PutObjectRequest(
bucketName, key, new File(filePath)));
} catch (AmazonServiceException ase) {
System.out.println("Caught an AmazonServiceException, which means " +
"your request made it to AWS S3, but was rejected with an error response " +
"for some reason.\n");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace