Skip to content

AWS DataPipeline でsjisからutf8に変換してgzipで圧縮したい

Posted on:2019年2月15日 at 00:00

処理の流れ

s3://inputlocation/ #ファイルが upload される場所

s3://outputlocation/ #utf8 で gzip で圧縮したファイル置き場

INPUT1_STAGING_DIR

    {
      "directoryPath": "s3://inputlocation/",
      "name": "S3InputLocation",
      "id": "S3InputLocation",
      "type": "S3DataNode"
    },

OUTPUT1_STAGING_DIR

    {
      "directoryPath": "s3://outputlocation/",
      "name": "S3OutputLocation",
      "id": "S3OutputLocation",
      "type": "S3DataNode"
    },

shift-jis -> utf8 変換と gzip 圧縮

#!/bin/bash
for file in `aws s3 ls s3://inputlocation/ | awk '{print $4}' | grep "^huga" `; do
  echo "${file}"
  iconv -f shift-jis -t utf-8 "${INPUT1_STAGING_DIR}/${file}" | gzip -c > "${OUTPUT1_STAGING_DIR}/${file}.gz"
done

shell コマンドの解説

for で回す際に${INPUT1_STAGING_DIR}でディレクトリ内のファイルで loop を回したかったが出来なかったので、直接 aws s3 コマンドで S3 バケットを指定している。