つかびーの技術日記

(情報)工学修士, 元SIer SE, 現Web系 SEの技術blogです。Scala, Java, JS, TS, Python, Ruby, AWS, GCPあたりが好きです。

awscliのs3 cpコマンドで「data must be a byte string」エラー

   

「data must be a byte string」

今回はAWSのCLIツールの中のS3コマンドを実行したときのエラーについてです。

awscliツールはLinux環境でpythonのモジュール管理ツールpipでインストールできます。pip install awscliとかで。

これでawscliを入れておくと以下のようにコマンドが使えるようになります。

aws s3 cp my_file s3://mybucket/mydir/

このコマンドはawsツールのサブコマンドs3を使ってファイルをコピーする。コピー元はcurrent dirのmy_fileで、コピー先はmybucket/mydir/、という意味になります。

あ、もちろんaws configureコマンドとかを予め実行してcredentialを登録している前提です。

これでファイルをバケットにコピーできる訳ですが、今回しょうもないエラーではまりました・・・。

エラー

「data must be a byte string」

100MBくらいのファイルを上記のようにaws s3 cpするとなぜかこういうエラーが出てしまいます。データはバイト文字列である必要があるとか意味が分からない・・・

大きいファイルがダメとも限らず、転送できたりできなかったりしました。

という訳でおそらく環境問題だろうということで、pipで入れたawscliのversion下げたり、python, pipを再インストールしたり、色々しましたがダメでした。

cpじゃなくて、syncなどを使ってもだめでした。

解決

結局python3で解決できました。

使っているpythonやらpipやら、全部削除してpython3から、いろいろインストールし直し。最終的に上手く行きました。

意味わからんすね・・・

 - クラウドサービス , , ,