AWS System Manager を使ってLambdaからEC2のコマンドを実行する

LambdaからEC2のコマンドを直接実行する方法のメモです。
cronで動いているバッチ処理をLambdaから実行したい場合などに使えると思います。

EC2のIAMロールを設定

SystemManagerコマンド実行のため、ポリシー「AmazonEC2RoleforSSM」を持ったロールを設定する。

LambdaのIAMロールを設定

LambdaでSystemManagerを使用してEC2のコマンドを実行するためのポリシー「AmazonEC2FullAccess」「CloudWatchLogsFullAccess」「AWSLambdaVPCAccessExecutionRole」を持ったロールを設定する。

EC2にSSMエージェントをインストール

参考:https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-manual-agent-install.html

Amazon Linux および Amazon Linux 2の場合

Lambda実行

今回は「/tmp」ディレクトリに「test.text」を作成するコマンド「cd /tmp; touch test.txt」をEC2上で実行する処理を作成

これを実行するとEC2にファイルが作成されます。