ruby SDKでEC2 Run Commandを試してみる
ruby SDKでEC2 Run Commandを試してみました。
EC2上で任意のコマンドを叩けるサービスです。
下のリンクを参考にしています。
recipe.kc-cloud.jp
事前準備
対象インスタンスにSSMエージェントを入れる
$ curl https://amazon-ssm-us-east-1.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o amazon-ssm-agent.rpm $ yum install -y amazon-ssm-agent.rpm
CLIで実行するユーザにアクセス権をつける
AmazonSSMFullAccessを対象ユーザにつけます
実行
CLIで実行
$ aws ssm send-command --document-name "AWS-RunShellScript" --instance-ids "i-xxxxxxxxxxxxxxxxx" --parameters '{"commands":["touch test"],"executionTimeout":["3600"]}' --timeout-seconds 600 --region us-east-1
testファイルが作成されていることを確認しました。
ruby SDKで実行
Gemfileとrubyファイルを用意します。
Gemfile
source :rubygems gem 'aws-sdk', '~> 2' gem "aws_config"
ec2_run_command.rb
require 'aws-sdk' require 'aws_config' Aws.config.update( :access_key_id => xxxxxxxxxxxxxxxx, :secret_access_key => xxxxxxxxxxxxxxxxxxxxxxx, :region => us-east-1 ) ssm = Aws::SSM::Client.new() res = ssm.send_command({ document_name: "AWS-RunShellScript", instance_ids: ["i-xxxxxxxxxxxxxxxxx"], parameters: { commands: ["touch test"], executionTimeout:["3600"] }, timeout_seconds: 600, })
実行します。
$ bundle install --path=vendor/bundle $ bundle exec ruby ec2_run_command.rb
access_key_id, secret_access_key, instance_idsを適切に設定して実行してください。
SSHが不要なのでセキュアに実行できるのが良いですね。