継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

待望の GA! AWS Chatbot を使って AWS をもっと使いこなそう!!

タダです.

ChatOps サービスの AWS Chatbot が一般利用開始されました.Amazon Chime や Slack へ他サービスからの通知メッセージを Lambda 等で処理する手間が不要でメッセージが最適化されているため楽だなとベータ期間中に感じました.この記事で Chatbot がどんな通知を受け取れるかを整理します.そして,もう1つの特徴である Slack からのコマンド実行も紹介して Chatbot を利用検討されている人の参考になれば嬉しいです.

aws.amazon.com

Chatbot と他のサービスとの連携

Chatbot はドキュメントに記載のように SNS をターゲットにして他サービスのイベントや通知を Amazon Chime もしくは Slack で受け取れるようになります.

通知のイメージ aws.amazon.com

コスト管理

AWS のコスト管理で AWS Budgets のアラートも Chatbot への連携できます.メールで見るよりも Slack 等で見るようにすると楽でしょう.AWS Budgets 連携イメージとして公式ブログに載っていますが,予算に対する利用状況をアラート通知してくれます.

docs.aws.amazon.com

開発ツール の通知

CloudFormation の通知はスタックの実行ステータスを作成が開始した時と完了した時で通知してくれます.画像はスタックの作成が成功した時のものです.この他に CodeCommit/CodeBuild/CodeDeploy/CodePipeline の通知も送信可能です. f:id:sadayoshi_tada:20200506140303p:plain

CloudWatch アラーム

CloudWatch アラームの通知も可能なので AWS リソースの監視アラートを通知してみました.画像は EC2 の CPU 使用率が60%を超えた場合のアラートですが,メトリクスの画像で状況も示してくれていてわかりやすいです.

f:id:sadayoshi_tada:20200507020809p:plain

CloudWatch イベントでの設定

CloudWatch イベントルールで設定した対応する他サービスの通知も Chatbot に統合可能です.

Config からの通知

AWS Config の変更履歴に関するイベントも通知できます.リソースの変更があった時スピーディーな感知ができるようになりそうです.

f:id:sadayoshi_tada:20200506233220p:plain

GuardDuty からの通知

GuardDuty のセキュリティ脅威イベントも通知できます.

f:id:sadayoshi_tada:20200506233238p:plain

PHD からの通知

Personal Health Dashboard の通知は以前記事でも紹介しましたが,影響を受けるリソースを通知してくれます.

f:id:sadayoshi_tada:20200308160500p:plain

sadayoshi-tada.hatenablog.com

SecurityHub からの通知

SecurityHub からのセキュリティチェック結果を通知したのが画像のものです.

f:id:sadayoshi_tada:20200506233258p:plain

Systems Manager からの通知

Systems Manager のイベントも通知を統合できます.画像は RunCommand の実行結果を通知した例です.

f:id:sadayoshi_tada:20200506235459p:plain f:id:sadayoshi_tada:20200506235510p:plain

Slack から AWS CLI コマンドを実行

Chatbot は通知を受け取るだけでなく Slack から AWS CLI コマンドを実行できます.Chatbot にアタッチした IAM ロールにコマンド実行に必要なポリシーを適用します.今回はドキュメントに記載のある参照の権限を付与しました.

docs.aws.amazon.com

{
   "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iam:*",
                "kms:*",
                "sts:*",
                "cognito-idp:GetSigningCertificate",
                "ec2:GetPasswordData",
                "ecr:GetAuthorizationToken",
                "gamelift:RequestUploadCredentials",
                "gamelift:GetInstanceAccess",
                "lightsail:DownloadDefaultKeyPair",
                "lightsail:GetInstanceAccessDetail",
                "lightsail:GetKeyPair",
                "lightsail:GetKeyPairs",
                "redshift:GetClusterCredentials",
                "s3:GetBucketPolicy",
                "storagegateway:DescribeChapCredentials"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

複数アカウントで設定されている場合,@aws set default-accountで切り替えてから実行していきます. f:id:sadayoshi_tada:20200507025939p:plain

試しに CloudWatch のアラーム一覧を@aws cloudwatch describe-alarmsで出力できます. f:id:sadayoshi_tada:20200507025947p:plain

他にも Lambda を実行したり,CloudWatch Logs の確認もドキュメントで紹介されていますので,運用中のシステムでアラートが出たのを確認して Slack から状況を確認するというアプローチも今後できますので活用していきたいと思います.

まとめ

Chatbot の通知できるサービスを整理しました.Slack を業務で使っている事例も多く聞くため業務との親和性も高い Chatbot を活用してチャットから AWS をさらに使いこなしていきましょう!