2017-09-18 15 views
0

ラムダJava関数を使用してS3オブジェクトの古いバージョンのメタデータを取得しようとすると、405メソッドが許可されません。ラムダでS3は古いバージョンのオブジェクトのメタデータを取得します

AmazonS3 amazonS3 = getAmazonS3(); 
GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, templateKey, versionId); 
ObjectMetadata objectMetadata = amazonS3.getObject(getObjectRequest).getObjectMetadata(); // Exception thrown at this line 

public AmazonS3 getAmazonS3() { 
    String region = PropertyManager.getValue(PropertyKey.AWS_REGION.getKey(stage)); 
    return AmazonS3ClientBuilder.standard().withRegion(region) 
       .withCredentials(new EnvironmentVariableCredentialsProvider()).build(); 
    } 

スタックトレース:

The specified method is not allowed against this resource. (Service: Amazon S3; Status Code: 405; Error Code: MethodNotAllowed; Request ID: 1D12DDA5F0493282): com.amazonaws.services.s3.model.AmazonS3Exception 
com.amazonaws.services.s3.model.AmazonS3Exception: The specified method is not allowed against this resource. (Service: Amazon S3; Status Code: 405; Error Code: MethodNotAllowed; Request ID: 1D12DDA5F0493282), S3 Extended Request ID: jTNnAl8ifgsUlPMV0GEHAEVBtWwjTprEJy45C9BMJ5kTk/Qn8Pne8/ZM/tH27ZoeUtHrd1NeuyQ= 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1258) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1030) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4187) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4134) 
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1385) 
    at com.ghx.templateengine.template.GetTemplateVersions.handleRequest(GetTemplateVersions.java:66) 
+0

メタデータではなくオブジェクト自体をフェッチしようとしたときと同じ例外が発生しますか? –

+0

versionIdを指定しないと、オブジェクトを取得できます。私が指定した場合、私は同様のエラーが発生します。 –

答えて

0

はS3オブジェクトの古いバージョンのいくつかは、削除マーカーを持っていました。 AWSサポートは、削除マーカーであるバージョンをオブジェクトに向けると405エラーが発生することを伝えました。

関連する問題