2016-12-14 1 views
1

Java 웹 애플리케이션에서 버킷을 생성하려고합니다. 내 바람둥이는 AWS EC2 인스턴스에서 구성됩니다.aws ec2 클라이언트에서 버킷에 액세스하는 동안 위치 제한 조건 예외

s3Client.setRegion(Region.getRegion(Regions.AP_SOUTH_1)); 
// Region apsouth1 = Region.getRegion(Regions.ap-south-1);     // s3Client.setRegion(apsouth1);                 // s3Client.setRegion(Region.getRegion(Regions.ap-south-1)); 
//s3Client.create_bucket(bucket, CreateBucketConfiguration={'LocationConstraint': 'ap-northeast-2'}) 

모두 "지역 : 위의 예에서

public class FileOperationsUtil { 
private final BasicAWSCredentials awsCreds = new BasicAWSCredentials("xyz", "zyz"); 
private final AmazonS3 s3Client = new AmazonS3Client(awsCreds); private final String bucketName = "grex-prod"; 
     //public static final Region ap-south-1; 
public void uploadFile(InputStream fileInputStream, 
String fileUploadLocation, String fileName) throws IOException { 
s3Client.setRegion(Region.getRegion(Regions.AP_SOUTH_1)); 
// Region apsouth1 = Region.getRegion(Regions.ap-south-1);     // s3Client.setRegion(apsouth1);                 // s3Client.setRegion(Region.getRegion(Regions.ap-south-1)); 
//s3Client.create_bucket(bucket, CreateBucketConfiguration={'LocationConstraint': 'ap-northeast-2'}) 
s3Client.createBucket(bucketName); 
File fileToUpload = new File(fileUploadLocation); 
     fileToUpload.mkdirs(); 
// Full file path 
     String fullFilePath = (fileUploadLocation + fileName); 
     ObjectMetadata meta = new ObjectMetadata(); 

     // meta.setContentLength(contents.length); 
     meta.setContentType("image/png"); 

     // Upload files to a specific AWS s3 bucket 
     s3Client.putObject(new PutObjectRequest("grex-prod", fullFilePath, 
       fileInputStream, meta) 
       .withCannedAcl(CannedAccessControlList.Private)); 
    } 
    public void deleteFolder(String oldFullFilePath) { 
     // System.out.println("inside"); 
     ObjectListing objects = s3Client.listObjects(bucketName, oldFullFilePath); 
     for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { 
s3Client.deleteObject(bucketName, objectSummary.getKey());} 
s3Client.deleteObject(bucketName, oldFullFilePath);} 
+1

일부 코드를 표시하고자 할 수 있습니다. 한 지역에 요청을 보내고 다른 지역에 버킷을 만들 것을 요청하는 것처럼 들립니다. –

답변

0

:

com.amazonaws.services.s3.model.AmazonS3Exception: 
The unspecified location constraint is incompatible for the region specific endpoint this request was sent to. 
(Service: Amazon S3; Status Code: 400;..). 

이 코드 샘플 : 그것은 AWS S3에 연결을 시도하는 동안은, 다음과 같은 오류를주고있다 "및"LocationConstraint "가 일치해야합니다. "ap-south-1"에서 버킷을 생성하려면 두 값 모두 해당 값으로 설정해야합니다.

오류가 발생했습니다. 두 값이 일치하지 않습니다. 즉, 한 지역 (예 : ap-south-1)에 연결 한 다음 다른 지역에 존재하도록 의도 된 양동이를 만들려고했습니다. ap-northeast-2).

"LocationConstraint"를 제외하면 버킷이 생성되는 위치는 전적으로 연결된 "Region"을 기반으로합니다. "LocationConstraint"를 사용하여 의도 한 영역이 아닌 다른 영역에서 버킷을 만들지 않도록 할 수 있습니다.

관련 문제