2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LambdaからEC2でコマンドを実行[AWS Systems Manager]

Last updated at Posted at 2021-09-12

Lambdaから、rubySDKを使いec2内にあるshスクリプトファイルを実行したい。

ec2インスタンスでコマンドを実行する方法として一番一般的なのは、
sshが挙げられると思うが、今回はAWS Systems Manager (旧称 SSM)を使って見ようと思う。

AWS Systems Managerは、
ec2にインストールされてるエージェント経由でコマンドを実行できるサービスらしい。

##準備

Lambdaにポリシーをアタッチ

①AmazonSSMFullAccess
②AmazonEC2RoleforSSM
を与えた。

ざっくり与えすぎてるので精査する必要があり。
参考にしないで下さい。。

EC2の準備

最近のversionのec2は最初からSSMエージェントがインストールされているらしいが、
古いEC2などの場合は手動でインストールする必要がある。
東京リージョンのAmazon Linux (x86_64)の場合
① EC2にエージェントをインストール

sudo yum install -y https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm

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

② EC2にポリシーをアタッチ
EC2にくっついてるロールに「AmazonSSMManagedInstanceCore」ポリシーをアタッチする。

実装

以下のようになる。

 ssm_client = Aws::SSM::Client.new( region: '****')
 command = 'sh /home/test.sh'
 resp    = ssm_client.send_command({ instance_ids: ["******"],
                                     document_name: "AWS-RunShellScript",
                                     comment: "Comment",
                                     parameters: {
                                     "commands" => [command]} })

send_commandの使い方は以下を参考
https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SSM/Client.html#send_command-instance_method

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?