概要
Workspaces の管理操作をRun Commandで行う
オンプレのWindowsサーバーにSSM-agentをインストールする手順とほぼ同じです。
流れ
- SSM でアクティベーション作成
- Workspaces に ssm-agent をインストール
- Run Command 実行
SSM でアクティベーション作成
AWS マネージメントコンソールを開き、"Systems Manager"のサービスをクリックし、左側メニューの"アクティベーション"をクリックし、画面右上の"アクティベーションの作成"をクリックする
設定内容を入れ、画面右下の"アクティベーションの作成"をクリックする
アクティベーション名:test-ws1(任意)
インスタンス数制限:5(任意)
アクティベーションの有効期限: 2018-09-08 T00:00+09:00 (任意)
アクティベーションが作成される。Activation CodeとActivation IDをエディタなどにコピーしておく
※特にActivation Codeは注意書きされてる通りもう表示されない
CLI
CLIでももちろん実施可能。以下はサンプルです。
aws ssm create-activation --default-instance-name MyWebServers --iam-role RunCommandServiceRole --registration-limit 10 --region us-east-2
参考資料
Workspaces に ssm-agent インストール
ssm-agentのインストールとアクティベーションを行う
以下の値を置換し、全体をコピーしてpowershellのターミナルに貼り付ける
アクティベーション作成時に取得したactivateion codeとactivation id、利用しているリージョンの値を入れる
activation-code に xxxxxxxxxxx
activation-id に yyyyyyyyyy
region に ap-northeast-1
$code = "activation-code"
$id = "activation-id"
$region = "region"
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
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"
一箇所権限の問題でエラーが出てますが、Workspacesのため許可されてない部分かもしれません。get系のコマンドなのでそのまま進めます。
AWS マネージメントコンソールの systems manager の画面で、アクティベーションされ workspaces のノードが登録されたことを確認する
参考資料
Run Command 実行
AWS マネージメントコンソールの systems manager の画面で、左側のメニューから Run Commandをクリックし、画面右上の"コマンドを実行"をクリックする
コマンドドキュメントの"AWS-RunPowerShellScript"にチェックを入れる
次に"AWS-RunPowerShellScript"のパラメータを入力していく
実行するPowershellコマンドに
New-Item d:\hogehoge -itemType Directory
ターゲットに先程登録したWorkspacesのノードを選択する
画面右下の"実行"をクリックする
実行状況。今回だとすぐ終わるので"成功"と出ている
Workspaces上にもディレクトリができています。
管理者がリモート操作で再起動させるなども出来ますね。
Restart-Computer -Force
ログオフはこれか
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(0)
Powershellのさまざまなコマンドが打てるのと、RunCommandで実行できるコマンドドキュメントも作成済のものが用意されていています。
CLI
CLIでももちろん実施可能。以下はサンプルです。
Send-SSMCommand -InstanceId 'Instance-ID' -DocumentName AWS-RunPowerShellScript -Comment 'listing services on the instance' -Parameter @{'commands'=@('Get-Service')}
aws ssm send-command --document-name "AWS-RunShellScript" --comment "listing services" --instance-ids "Instance-ID" --parameters commands="service --status-all" --region us-west-2 --output text
参考ドキュメント