0

最新のaws-sdk Javaライブラリを使用してGCSバケットからオブジェクトをリストしようとしています。GCSバケットからオブジェクトをリストアできません

はまた、私はamazonS3Client上記とgetObjectsとputObjectsで行うことができる午前

ClientConfiguration clientConfiguration = new ClientConfiguration(); 
    // Solution is update the Signer Version. 
    clientConfiguration.setSignerOverride("S3SignerType"); 

    AWSCredentials awsCredentials = new BasicAWSCredentials("XXX","XXX"); 
    AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard() 
    .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) 
    .withClientConfiguration(clientConfiguration) 
    .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("https://storage.googleapis.com","Multi-Regional")).build(); 

    String bucketName = "bucket_name"; 

    // List Objects 
    amazonS3Client.listObject(bucketName); 

しかし、無効arguments.Referエラーログとデバッグログに を受け、ここでコードスニペットを参照してください。 アイデア

2017-11-13 17:54:15,360 [main] DEBUG com.amazonaws.request - Sending Request: GET https://bucket_name.storage.googleapis.com/Parameters: ({"encoding-type":["url"]}Headers: (User-Agent: aws-sdk-java/1.11.158 Linux/4.10.0-38-generic Java_HotSpot(TM)_64-Bit_Server_VM/25.131-b11/1.8.0_131, amz-sdk-invocation-id: 121cd76e-1374-4e5d-9e68-be22ee2ad17a, Content-Type: application/octet-stream,) 
2017-11-13 17:54:16,316 [main] DEBUG com.amazonaws.request - Received error response: com.amazonaws.services.s3.model.AmazonS3Exception: Invalid argument. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: null), S3 Extended Request ID: null 
Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Invalid argument. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: null), S3 Extended Request ID: null 
     at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588) 
     at 
+0

なぜ「aws-cli」を使用して「google cloud storage」バケットを問い合わせているのかわかりません。 'gcloud sdk'を使いたいかもしれません。 https://cloud.google.com/sdk/gcloud/ – Asdfg

+0

aws-sdkライブラリは実際にGCSをサポートしていますか?私はそうは思わない。別のライブラリに切り替えることを検討してください。 –

+0

GCSは実際にS3 REST APIのエミュレートをサポートしています。 –

答えて

0

S3は、「URL」に設定、という「encodingtype」と呼ばれるそのオブジェクトリスト呼び出しへのパラメータを持つURLエンコードを使用してXML 1.0でネイティブにレンダリングできない文字をエンコードします。クライアントライブラリはそのフラグを使用しているようです。私は、GCSのXML APIがそのパラメータをサポートしているとは信じていないので、InvalidArgumentエラーで呼び出しが失敗します。

私は試していないが、あなたはおそらく、ListObjectRequestを使用してsetEncodingType(null)を呼び出すことによってこの問題を回避することができます。

+0

"encodingType"をnullに設定した後でも、ListObjectRequestはクエリパラメータにデフォルトの "url"を追加します。だから私は同じ "無効なクエリパラメータのエンコーディングタイプ"エラーを取得しています。任意のハンドラまたはリスナを使用してAmazonHttpClientを使用してリクエストを実行する前に、このパラメータをリクエストから削除することは可能ですか? – Pez

関連する問題