目的
急いでEC2インスタンスを作成して使いたいときに、
Windowsパスワードがなかなか発行されずイライラするので作った
1.WindowsのコマンドからSlackにメッセージが送れることを確認する
2.インスタンス作成時のスクリプトで、パスワード変更が終わったらSlackメッセージを流す
PowerShell でSlackにメッセージを送信する
必要なパラメータは・・・
- 送信者
- チャンネル
- コメント
で、Invoke-RestMethod コマンドで送信できる
Invoke-RestMethod -Uri "https://slack.com/api/chat.postMessage" -Method POST -Body "token=【送信者のAPIトークン】&channel=【チャンネル】&text=【コメント】"
例えばこんな感じで
送信者 :HUBOTにする
SlackにHUBOTを入れる https://slack.com/apps 👈ここから「HUBOT」を追加して APIトークン を取得します(詳細略)
チャンネル :#general にする
コメント :「I’m Ready.」とする
Invoke-RestMethod -Uri "https://slack.com/api/chat.postMessage" -Method POST -Body "token=【HUBOTのAPIトークン】&channel=general&text=I'm Ready."
メッセージ文字列が固定だと面白くないので、割り当てられているプライベートIPを追加する
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/local-ipv4
これで取れるので、👇こんな風にすると
$hoge = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/local-ipv4
$hoge ="token=【APIトークン】&channel=【チャンネル名】&text=I'm ready." + $hoge
Invoke-RestMethod -Uri "https://slack.com/api/chat.postMessage" -Method POST -Body $hoge
ちなみに、日本語を送りたい場合は、URLエンコードすれば良い
https://tech-unlimited.com/urlencode.html
EC2作成時のスクリプトを設定(UserData の設定)
前提:作成するインスタンスからインターネット参照ができること
ステップ3の下部「高度な設定」を展開してスクリプトを書きます
- タイムゾーンを変更
- Administratorパスワードを変更
- 終わったらSlackにメッセージ通知
<powershell>
tzutil /s "Tokyo Standard Time"
net user Administrator Passw@rd123
$hoge = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/local-ipv4
$hoge ="token=【APIトークン】&channel=【チャンネル名】&text=I'm ready." + $hoge
Invoke-RestMethod -Uri "https://slack.com/api/chat.postMessage" -Method POST -Body $hoge
</powershell>
あとがき
UserDataでのWindows初期設定はもっと色々なことができるので
Slackで完了メッセージ送信は非常に有効かと思われる
ノシ