3
4

More than 5 years have passed since last update.

Riak CSにAWS SDKを使ってアクセスする場合の注意点

Posted at

Riak CSへのアクセス方法

Riak CS にアクセスする場合、CSをs3.amazonaws.comにアクセスするためのProxyとして使うアクセス方法と
、CSに直接アクセスする方法がある。
http://docs.basho.com/riakcs/latest/cookbooks/configuration/Configuring-Riak-CS/#Proxy-vs-Direct-Configuration

Riak CSにAWS SDKを使って直接アクセスする場合の問題点

Riak CSにAWS SDKを使って直接アクセスすると、以下のような例外が発生する。

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: Access Denied), S3 Extended Request ID: null

Riak CSにAWS SDKを使って直接アクセスする場合、AmazonS3Client.setEndpoint() でエンドポイントを指定する。
エンドポイントを指定すると、AWS SDK内部のリクエスト署名アルゴリズムがversion 4の形式に変更される。
Riak CSがversion 4の署名アルゴリズムに対応していないため、認証が失敗することになる。

対処方法

AmazonS3Client のコンストラクタに渡す ClientConfiguration で、以下のように署名アルゴリズムタイプを指定する。

ClientConfiguration.withSignerOverride("S3SignerType")

'S3SignerType' を指定すると、エンドポイントを設定しても署名アルゴリズムがv2のままになるので、認証が成功する。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4