[アップデート]EC2 Run Commandがクロスプラットフォームで利用可能になりました!AWS以外でのクラウド、オンプレミス環境でも使えます!
コンニチハ、千葉です。
本日7/7はクラスメソッド創立記念日でもあり、私の誕生日でもあります。とってもめでたいのでブログを書いてお祝いです!この後も記念日ブログラッシュは続きます!
ということで!EC2 Run Commandにアップデートがありました!
EC2 Run CommandがAWS以外のクラウドや、VMware ESXi、Hyper-V、オンプレミスサーバ等色々なプラットフォームでも利用可能となりました。もちろん、Linux、Windowsどちらも利用可能です。
ハイブリット環境で運用していて、サーバへ対し同じアクションを何度も行いたい場合はかなり便利なのではないでしょうか。また、EC2 Run Commandの監査ログはCloudTrailで取得可能ですし、IAMによるアクセス制御も可能なため、セキュリティとしてのメリットもあります。
EC2 Run Commandに関する過去記事も合わせて確認!!
- 【新機能】EC2に任意のコマンドを実行できるボタン「Run Command」が追加(まだWindowsだけ)
- 【新機能】EC2に任意のコマンドを実行できるボタン「Run Command」がついにLinuxにも追
- Lambda + EC2 Run Commandで擬似Cron環境を作る【東京上陸記念】
- 【アップデート】EC2 Run Commandの事前定義コマンドが増えました
今回は、どのようにすれば利用できるのか試してみました。
手順
今回は、某クラウド上にWindowsインスタンスを起動して、AWSからコマンドを発行してみました。手順は以下となります。
- マネージドインスタンスアクティベーション
- SSMエージェントのインストール
前提条件については、Linux、Windowsでご確認ください。
インターネットへのアウトバウンド接続があればokそうです。
やってみた
マネージドインスタンスアクティベーション
EC2のコンソールから、Activationsを選択
Run a commandをクリック
Registration Limit
に管理対象となるサーバー数、Expiration Date
にRun Commandが有効な期間を入力します。また、Run Command用のIAMロールが自動で作成されます。
Activation Code
とActivation ID
が払い出されるのでメモしておきます。
SSMエージェントのインストール
今回は、某クラウド上にWindows2012のインスタンスを作成しました。某クラウド上のインスタンスに、SSMエージェントをインストールしてみます。
AWS Tools for Windows PowerShellをインストールします。
AWS Tools for Windows PowerShell
を起動して、以下のコマンドをコピペします。(AWS Tools for Windows PowerShell起動時にアクセスキーの入力を求められますが未入力でも大丈夫でした)
以下の項目は環境に合わせて変更します。
- https://amazon-ssm-region.s3.amazonaws.com/の
region
。東京の場合は、https://amazon-ssm-ap-northeast-1.s3.amazonaws.com/ - CODE=codeの
code
。先ほど取得したActivation Code
を指定 - ID=idの
id
。先ほど取得したActivation ID
を指定 - REGION=regionの
region
。東京の場合はap-northeast-1
を指定
$dir = $env:TEMP + "\ssm" New-Item -ItemType directory -Path $dir cd $dir (New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe") Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log", "CODE=code", "ID=id", "REGION=region") -Wait Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration") Get-Service -Name "AmazonSSMAgent"
上記コマンド実行後に、マネジメントコンソールを覗いてみると...
Managed Instance
に表示されました!!!
コマンドを実行してみた
hostname
コマンドを実行して、ホスト名を取得してみます。
取得できました!!
最後に
某クラウド上のインスタンスに、AWSコンソールから簡単に操作することを確認できました。ハイブリットクラウドやマルチクラウド環境での運用負荷軽減の効果が期待できそうです。 Windowsアップデートもマネジメントコンソールからボタンポチで実行できるので定期的な運用項目に対して自動化して効率化が期待できます。
参考
http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/execute-remote-commands.html