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から、いろいろインストールし直し。最終的に上手く行きました。
意味わからんすね・・・