Description: サーバ上に常駐し、AWS Step Functionsのタスクに定義された任意のコマンドをサーバ上で実行します。
- Go v1.12.9
- Go Modules
step-functions-agent
├── .go-version ... goenv用(goenv使用しない場合は意識する必要はない)
├── go.mod ... ライブラリ管理ファイル
├── go.sum ... ライブラリ管理ファイル
├── main.go ... 本プログラムのソースファイル
└── Makefile ... makeコマンドでビルドを自動化しています
$ make
dist配下に、ビルド成果物として、step-functions-agentファイルが生成されます。
-
Buildingの手順により生成されたstep-functions-agent`ファイルをサーバ上に配置します$ sudo su - $ mkdir -p /tool/step-functions-agent/bin $ mv ~/step-functions-agent /tool/step-functions-agent/bin/ $ chmod +x /tool/step-functions-agent/bin/step-functions-agent -
サービスとして起動し、プロセスの死活管理を行うためimmortalを導入します
-
immortalをインストールします
$ curl -s https://packagecloud.io/install/repositories/immortal/immortal/script.rpm.sh | sudo bash $ yum install immortal -
設定ファイルを作成し配置します
$ cd /etc/immortal $ touch step-functions-agent.ymlstep-functions-agent.ymlの内容{ActivityのARN}には、Usingの項目で、AWS Step Functionsに作成したアクティビティのARNを指定します。https://ap-northeast-1.console.aws.amazon.com/states/home?region=ap-northeast-1#/activities
cmd: /tool/step-functions-agent/bin/step-functions-agent -arn {ActivityのARN} cwd: /root env: HOME: /root log: file: /var/log/step-functions-agent.log age: 86400 num: 7 size: 1 timestamp: true user: root -
サービスとして起動する
- ステータスを確認します
$ immortalctl status- サービスが起動してなかったら再起動します
$ immortalctl restart step-functions-agent
-
-
AWS Step Functionsにアクティビティを作成する
-
AWS Step Functionsのステートマシンに、以下のようにタスクを定義して使用します
{
"Type": "Task",
"Parameters": {
"Command": "/PAHT/TO/COMMAND" # ここに実行したいコマンドを指定する
},
"TimeoutSeconds": 300,
"HeartbeatSeconds": 60,
"Resource": "1で作成したAcitvityのARNを指定",
}