CLI tool to run a batch jobs with ETL framework on AWS.
ecsub
は github のリポジトリからダウンロードしてインストールすることができます。
Python で作成されており、実行するには python2.7 もしくは python3.5 以上が必要です。
ecsub の実行には AWS が提供しているコマンドラインツールおよび aws アクセスのための python パッケージが必要です。
まず、awscli と boto3 をインストールします。
もしインストール済みであれば、念のためアップグレードしておきます。
pip install awscli boto3 --upgrade
次にecsub をインストールします。
git clone https://github.com/aokad/ecsub.git
cd ecsub
python setup.py build install
awscli に AWS ユーザを登録します。
事前に AWSアカウントの設定 を行ってください。
aws configure
AWS Access Key ID [None]: <YOUR ACCESS KEY>
AWS Secret Access Key [None]: <YOUR SECRET ACCESS KEY>
Default region name [None]: <REGION>
Default output format [None]: json
動作確認のために簡単なジョブを実行してみます。
まず、簡単な実行スクリプトと、タスクファイルをダウンロードします。
mkdir ecsub_hello
cd ecsub_hello
wget https://aokad.github.io/ecsub-doc-ja/assets/tiny/run_hello.sh
wget https://aokad.github.io/ecsub-doc-ja/assets/tiny/tasks_hello.tsv
次に ecsub の作業用に AWS S3 バケットを作成します。
任意の名前を付けることができますが、AWS 全アカウントでユニークである必要があるため、あまり安易な名前は既に使用されている可能性があります。
–> 参考:バケット命名規則
export YOUR_BUCKET=${任意のバケット名}
aws s3 mb s3://${YOUR_BUCKET}
ジョブを実行します。
run_hello.sh
ファイルのパスを指定してくださいtasks_hello.tsv
ファイルのパスを指定してくださいecsub submit \
--script ./run_hello.sh \
--tasks ./tasks_hello.tsv \
--aws-s3-bucket s3://${YOUR_BUCKET}/ecsub \
--image python:2.7.14 \
--aws-ec2-instance-type t2.micro \
--disk-size 1
実行できましたか?
“ecsub completed successfully!” と表示されていれば成功です。
–> 参考:ecsub のデモ
以下の権限を付け、”ecsub-user” という名前でグループを作成してください。
(*1): ここでは解説のため S3FullAccess をつけていますが、与える権限は目的に応じて必要最低限にすることを推奨します。
以下の権限を付け、”ecsInstanceRole” という名前でロールを作成してください。
(*1): ここでは解説のため S3FullAccess をつけていますが、与える権限は目的に応じて必要最低限にすることを推奨します。
作成したロールの「信頼関係」を編集し、サービスに "ecs-tasks.amazonaws.com", "ec2.amazonaws.com"
を登録します。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": ["ecs-tasks.amazonaws.com", "ec2.amazonaws.com"]
},
"Action": "sts:AssumeRole"
}
]
}
作成したユーザを “ecsub-user” グループに所属させます。