山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

S3cmdのProxy設定について

s3cmdを使用して動いていたバッチ処理で、proxy設定を追加しようとしたら色々大変だったお話。

S3cmdとは

S3cmd : Command Line S3 Client and Backup for Linux and Mac

公式ページより。

Windows用にはS3Expressというのがあるらしい。

S3Express : Command Line S3 Client and S3 Backup for Windows

まとめ

  • 環境変数(http_proxy)ではなく、設定ファイルに記載する
    • proxy_host, proxy_port
    • 設定ファイルのデフォルトは「~/.s3cfg」
    • コマンド実行時に「-c」で設定ファイルを渡すことも可能
  • ↑のproxy設定はPython2.7以上が必要
  • Python2のバージョン上げたくない場合はPython3を使用することも可能
    • S3cmdのV2以降はPython3を使用することも可能。
  • python3を使用する場合にはs3cmdを直接実行するのではなく、「python3 s3cmd」的な感じで実行する必要がある。
    • 「s3cmd」はPythonスクリプトで先頭に「#!/usr/bin/env python2」とpython2の指定があるため。

経緯とか(読む意味なし)

  • 会社でproxyを設定しろよという連絡がきた
  • (半)自動化されていたとあるシステムが動かない
  • S3cmdの処理で落ちている
    • Problem: error: [Errno 111] Connection refused
  • Proxy設定してないのでは?
    • export http_proxy=xxxxx
    • export https_proxy=yyyy
  • 変わらずエラー
    • 調べた → 設定ファイルに書く必要がある
  • 設定ファイルに書いた
  • python2.7以上で動かせと怒られる
    • 2.6.6か何かで動いていた
  • python2のバージョンは上げたくない。というかpython3にしたい
  • s3cmdは2のみ → s3cmdバージョン2で対応しているらしい → s3cmdのバージョンアップ
  • python3をデフォルトにしてs3cmd起動
  • python2.7以上で動かせと怒られる
    • (゚Д゚)ハァ?
  • シバンにpython2が指定してある
  • python3に引数でs3cmd渡して起動
  • OK

参考URL