blog

Wercker step-s3sync でファイル名に日本語を含んでいる場合に Sync できない問題の解決方法(小ネタ)

    • Ryuichi Nonaka

    はじめに

    middleman-blog の custom_collections を使ってシリーズ記事を生成(ファイル名に日本語を含む)したところ、Wercker の step-s3sync で Amazon S3 にシンクできない問題が発生したので、解決に至るまでの経緯をメモとして残しておきます。

    原因

    Wercker の step-s3sync が内部で使っている s3cmd が Python で動いていて、Python デフォルトエンコーディングが ASCII のため日本語ファイルが扱えないそうな。エンコーディングを UTF-8 にしてやると解決する。

    結論

    これを解決するために Docker のコンテナまでローカルで走らせて step に script を書いてなんとかエンコーディングを変えるよう試みたが、結局 step-s3sync にオプション(--encoding=ENCODING)を渡してやることで解決できました(なんて簡単!)。

    deploy:
      steps:
        - s3sync:
          key_id: $AWS_ACCESS_KEY_ID
          key_secret: $AWS_SECRET_ACCESS_KEY
          bucket_url: $AWS_BUCKET_URL
          source_dir: build/
          delete-removed: true
          opts: --encoding=utf-8
    

    終わりに

    結論に至るまでに無駄に調べてしまった Wercker CLI と Docker Toolbox については別の機会に記事にしておきたい。

    参考記事

    コメント・フィードバック