定期的に、AWS S3のファイルを、Google Cloud Storageにコピーしています。
コピーのやり方は色々あるのですが、ここではGoogle Cloud SDKのgsutil
コマンドを使っていて、
Google Cloud SDKは、Alpine LinuxのDockerイメージを使用しています。
しかし、ある時から、下記のようなエラーがでるようになって、コピーができなくなりました。
... Traceback (most recent call last): File "/google-cloud-sdk/platform/gsutil/gslib/boto_translation.py", line 632, in _PerformSimpleDownload key.get_contents_to_file(download_stream, TypeError: get_contents_to_file() got an unexpected keyword argument 'hash_algs' ... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 8191: unexpected end of data ...
原因
最新のCloud SDKだとエラーになるようで、Dockerfileで古いバージョンにすると直りました。
FROM google/cloud-sdk:276.0.0-alpine
それまでは、最新版を取ってくるようにしていました。
FROM google/cloud-sdk:alpine
感想など
原因究明に時間取られました…。
最初にDockerfileを作った時に、いずれバージョン固定した方がいいんだろうとな思いつつ、問題になった時に考えればいいかと「latest」にしていましたが、それから数年問題なく動いていたので、問題になった時にはその事をすっかり忘れていました…。
Google Cloud SDKに限らず、テストで使う分にはDockerのイメージは最新版でいいのですが、実際に使うとなった時点で、バージョン固定した方がいいですね。