TalendのS3コンポーネントと「S3署名バージョン2廃止」の影響
「S3の署名バージョン2 廃止にAWS CLIやSDKをバージョンアップせずに対応する方法を調べてみた」
「S3の署名バージョン2 廃止に対応する方法を調べてみた(Embulk S3プラグイン編)」
に引き続き、ETLツールである、Talend で提供されているS3用コンポーネント(「t3Get」など)が、「S3署名バージョン2廃止」による影響があるかを調べました。
検証に利用したTalendのバージョンなどの情報は下記になります。
古いバージョンでの検証なので、あまり需要は無いかもしれませんが、参考情報として載せておきたいと思います。
項目 | バージョン |
---|---|
検証したTOSのバージョン | Talend Open Studio 「TOS_DI-20150508_1414-V5.6.2」 |
検証したS3用コンポーネント | t3Get |
内部で利用されているAWS Java SDK | aws-sdk-java/1.9.13 |
上記のようにaws-sdk-javaのバージョンは、署名バージョン 2 から署名バージョン 4 への移行 に記載のある aws-sdk-java/1.11.x
より古い、バージョンになっていました。
先に結論:「t3Get」コンポーネントのRegion設定の内容によって、署名バージョンが異なる
色々と試行錯誤したのですが、先に検証結果の結論を書いておきますと、
「t3Get」コンポーネントのRegion設定の内容によって、署名バージョンが異なる
でした。
「t3Get」コンポーネントのRegion設定に「Default」を指定した場合
下記画像のように、「t3Get」コンポーネントには、Regionの指定をする欄があり「Default」を指定すると署名バージョン2になります。
CloudTrailのログ (SignatureVersion
が SigV2
になっている)
: : "eventTime": "2019-XX-XXTXX:XX:XXZ", "eventSource": "s3.amazonaws.com", "eventName": "GetObject", "awsRegion": "ap-northeast-1", "sourceIPAddress": "xxx.xxx.xxx.xxx", "userAgent": "[aws-sdk-java/1.9.13 Windows_Server_2012_R2/6.3 Java_HotSpot(TM)_64-Bit_Server_VM/24.80-b11/1.7.0_80]", "requestParameters": { "bucketName": "sigv2-test-bucket", "Host": "sigv2-test-bucket.s3.amazonaws.com", "key": "test/s3.png" }, "responseElements": null, "additionalEventData": { "SignatureVersion": "SigV2", : :
「t3Get」コンポーネントのRegion設定に明示的にリージョンを指定した場合
Regionの指定をする欄に明示的にリージョンを指定すると署名バージョン4になりました。
CloudTrailのログ (SignatureVersion
が SigV4
になっている)
: : "eventTime": "2019-XX-XXTXX:XX:XXZ", "eventSource": "s3.amazonaws.com", "eventName": "GetObject", "awsRegion": "ap-northeast-1", "sourceIPAddress": "xxx.xxx.xxx.xxx", "userAgent": "[aws-sdk-java/1.9.13 Windows_Server_2012_R2/6.3 Java_HotSpot(TM)_64-Bit_Server_VM/24.80-b11/1.7.0_80]", "requestParameters": { "bucketName": "sigv2-test-bucket", "Host": "sigv2-test-bucket.s3-ap-northeast-1.amazonaws.com", "key": "test/s3.png" }, "responseElements": null, "additionalEventData": { "SignatureVersion": "SigV4", : :
「S3の署名バージョン2 廃止にAWS CLIやSDKをバージョンアップせずに対応する方法を調べてみた」にも記載しましたが、 AWS Java SDKとして 1.6.10 以降のバージョンであれば、署名バージョン2から署名バージョン4に切り替えるように、署名バージョンの指定が可能になっています。
おそらくですが、「t3Get」コンポーネントの設定で明示的にリージョンが指定された場合、内部的に署名バージョン4を指定するようなロジックになっているのではないかと推測されます。
※ 上記挙動は、Talendのバージョンによって異なるかもしれませんので、実際に検証いただくことをお勧めいたします。
まとめ
- S3へのAPIリクエストにおける「署名バージョン2」が2019年6月24日に廃止されます
- S3を利用するサードパーティツールにも影響があります(内部で利用しているaws-sdkが古い場合)
- TalendのS3プラグインもコンポーネントの設定によって影響があることがわかった
- S3をサードパーティツールから利用されている方は、内部で利用されているaws-sdkのバージョンをご確認いただくことをお勧めいたします。
また、下記関連記事もご参考にいただければ幸いです
参考記事:「S3の署名バージョン2 廃止にAWS CLIやSDKをバージョンアップせずに対応する方法を調べてみた」
参考記事:「S3の署名バージョン2 廃止に対応する方法を調べてみた(Embulk S3プラグイン編)」