S3の署名バージョン2 廃止に対応する方法を調べてみた(Embulk S3プラグイン編)

AWS運用自動化サービス「Cloud Automator」

S3の「署名バージョン2」廃止と、サードパーティツールのS3プラグインへの影響

S3の署名バージョン2 廃止にAWS CLIやSDKをバージョンアップせずに対応する方法を調べてみた

に関連して、S3を利用するサードパーティツールへの影響についても調べてみました。

S3はデータのETL処理(Extraction Transformation and Load)において、加工前データ・加工後データの保存先として利用されることが多く、サードパーティのETLツールにも、S3用のプラグインが用意されています。

これらサードパーティツールのS3プラグインの内部では、AWS SDKが利用されているため、これらのバージョンが古い場合、S3へのAPIリクエスト時の署名バージョンが「署名バージョン2」になっている可能性があり、プラグインの入れ替えやツール自体のアップデートが必要になる可能性があります。

今回は、ETL処理で良く利用される「Embulk」のS3プラグイン「embulk-input-s3」で、S3の署名バージョン2 廃止に対応する方法を調べてみました。

Embulkの「embulk-input-s3」で S3の「署名バージョン2」廃止に対応する方法

※ あくまで対応方法の一つになりますが、ご参考にしていただければ幸いです。また、以下に記載している方法は実際の環境で動作をご検証のうえご利用ください。

Embulkの「embulk-input-s3」のバージョンと、利用されている「aws-sdk」のバージョンを調べる

インストール済みの「embulk-input-s3」プラグインのバージョンを確認

「embulk-input-s3」プラグインの classpath ディレクトリに移動し、利用されている「aws-java-sdk」のバージョンを調べます。

上記のように「aws-java-sdk/1.11.xx」より以前のバージョンが利用されている場合、S3へのアクセスの署名バージョンはデフォルトで署名バージョン2になっているため対応が必要になります。

実際にEmbulkを実行し、S3バケットにアクセス、その際の署名バージョンを確認してみる

config.yml は対象のS3バケットにアクセスする設定

Embulkを実行

CloudTrailのログを確認してみるとやはり、 SignatureVersionSigV2 となっていました。

「embulk-input-s3」をバージョンを指定してアップグレードする

下記の手順でプラグインをアップデートすることができます。

注意点としては、最新バージョンに上げてしまうとJavaのバージョンとの互換性の問題で、プラグインが動きませんでしたので、「embulk-input-s3」の0.2系の最新バージョンである、「embulk-input-s3 0.2.21」を指定しました。

内部で利用されている「aws-java-sdk」のバージョンを確認すると「1.11.253」が利用されています。

下記の手順は必須ではないですが、古いバージョンのプラグインを削除したい場合は、下記のコマンドで削除することができます。

再度、Embulkを実行

CloudTrailのログを確認し、 SignatureVersionSigV4 になっていることを確認できました。

まとめ

  • S3へのAPIリクエストにおける「署名バージョン2」が2019年6月24日に廃止されます
  • S3を利用するサードパーティツールにも影響があります(内部で利用しているaws-sdkが古い場合)
  • Embulkのようなプラグイン方式でS3プラグインを提供しているツールでは、プラグインの入れ替えで対応が可能です

S3をサードパーティツールから利用されている方は、内部で利用されているaws-sdkのバージョンをご確認いただくことをお勧めいたします。

また、下記関連記事もご参考にいただければ幸いです

参考記事:「S3の署名バージョン2 廃止にAWS CLIやSDKをバージョンアップせずに対応する方法を調べてみた
参考記事:「ETLツール「Talend」でS3署名バージョン2廃止に対応する方法

AWS運用自動化サービス「Cloud Automator」