AWS ChatBot

#AWS Chatbotとは
ついに来た！　AWS Chatbot が一般公開(GA)になりました！　Slack連携が捗ります！
https://dev.classmethod.jp/articles/aws-chatbot-generally-available/

> AWSチャットボットは、DevOpsとソフトウェア開発チームがAmazon ChimeとSlackのチャットルームを使用してAWSクラウドの運用イベントを監視および応答できるようにするAWSサービス

##AWS Chatbot 機能
* SlackとAmazon Chime
* 事前定義されたAWS Identity and Access Management（IAM）ポリシーテンプレート

> AWS Chatbotは、AWS Identity and Access Management（IAM）を介してチャットルーム固有のアクセス許可コントロールを提供します。AWS Chatbotの定義済みテンプレートを使用すると、特定のチャネルまたはチャットルームに関連付ける必要なアクセス許可を簡単に選択して設定できます。

* 通知を受け取る

> AWSチャットボットを使用して、運用インシデントやその他のイベントに関する通知を、運用アラーム、セキュリティアラート、予算の逸脱など、サポートされているソースから受信します。AWS Chatbotコンソールで通知を設定するには、通知を受信するチャネルまたはチャットルームを選択してから、通知をトリガーするAmazon Simple Notification Service（Amazon SNS）トピックを選択

* Slackを使用してAWS CLIから診断情報を取得

> AWS Chatbotは、ほとんどのAWSサービスの読み取り専用コマンドをサポートしているため、デスクトップおよびモバイルデバイス上のSlackからAWSリソースに関する診断情報を簡単に取得できます。中央の場所からリアルタイムで診断情報を取得することにより、チームはイベントをより迅速に分析して対応できます。Lambda関数を呼び出してワークフローを開始したり、Slackからの簡単なコマンドでAWSサポートケースを作成したりすることもできます。

##AWS Chatbotの仕組み

> AWSチャットボットは、Amazon Simple Notification Service（Amazon SNS）トピックを使用して、AWSサービスからSlackおよびAmazon Chimeチャットルームにイベントおよびアラーム通知を送信します。SlackとAmazon Chimeのユーザーは、SNSトピックをSlackチャネルまたはAmazon Chime Webhookにマッピングします。Slackの場合、Slack管理者がSlackワークスペースに対するAWSチャットボットのサポートを承認すると、ワークスペース内の誰でもAWSチャットボットをSlackチャネルに追加できます。

##AWS Chatbotを他のAWSサービスで使用する

* AWSの請求とコスト管理
* AWS CloudFormation
* AWS開発者ツールの通知
* Amazon CloudWatchアラーム
* Amazon CloudWatchイベント

###AWSの請求とコスト管理

> AWS Billing and Cost Managementは、AWSアカウント所有者がサービスの使用、サービスのコスト、インスタンスの予約を計画するのに役立ちます。これは、ブレンドされていないコスト、サブスクリプション、払い戻し、およびリザーブドインスタンスを追跡する特定のタイプの予算を使用して行います。サービスは、AWS予算アラートをAmazon SNSトピックに送信します。次に、AWS ChatbotでAmazon SNSトピックをマッピングして、それらの通知をチャットルームに送信します。

###AWS CloudFormation
> AWS Chatbotは、Amazon SNSトピックを介したAWS CloudFormation通知をサポートしています。AWSチャットボットでの使用が有効になっているSNSトピックのサポートを有効にするには、各AWS CloudFormationスタック構成でそれらを選択します。

###AWS開発者ツールの通知
> AWSは、ソフトウェア開発プロジェクトを作成、管理、および操作するためのクラウドベースの開発者ツールのスイートを提供します。AWS開発ツールスイートには、AWS CloudFormationスタック、AWS CodeBuild、AWS CodeCommit、AWS CodeDeploy、AWS CodePipelineなどのAWSサービスが含まれています。これらのサービスのAmazon SNSトピックサブスクリプションをAWSチャットボットにリダイレクトできます。例えば、AWS CodeCommitリポジトリまたはAWS CodePipelineのパイプラインのイベントに関する通知を開発チームのSlackチャネルに表示する場合は、開発者ツールコンソールでそれらのリソースの通知を設定し、使用するSNSトピックを統合できますAWS Chatbotでのこれらの通知。詳細については、次に、これらの通知に使用されるSNSトピックをAWSチャットボットと統合します。詳細については、次に、これらの通知に使用されるSNSトピックをAWSチャットボットと統合します。

###Amazon CloudWatchアラーム
> AWSサービスのパフォーマンスと運用メトリックを監視し、しきい値に違反したときに通知を送信するには、Amazon CloudWatchでアラームを作成できます。CloudWatchは、Amazon SNS通知を送信するか、アラームの状態が変化したときにアクションを実行します。Alarmsアクションは、チャットルームで閲覧するためのAWSチャットボットへの通知を転送するアマゾンSNSトピックに通知を送信します。

CloudWatchアラームアクションがレポートできる、任意のAWSサービスの任意のメトリクスは、SNSトピックによってAWSチャットボットを介してチャットルームに共有することもできます。これには、Amazon Elastic Compute Cloud（Amazon EC2）などのサービスのアラームが含まれます。

###Amazon CloudWatchイベント

> Amazon SNSトピックをCloudWatchイベントルールにマップしてから、それをAWS ChatbotコンソールのSlackチャネルまたはAmazon Chime Webhookにマップします。サービスイベントがルールに一致すると、ルールのAmazon SNSトピックが通知をチャットルームに送信します。

###AWS Config

> AWS Configモニタリングでは、Amazon CloudWatchイベントルール を設定して、AWS Configイベント通知をAmazon SNSトピックに転送します。次に、そのトピックをAWSチャットボットにマッピングして、チャットルームでのイベント通知を追跡できます。

###Amazon GuardDuty

> GuardDutyは、セキュリティインシデントと脅威を調査結果を通じて報告します。結果はGuardDutyコンソールに表示され、自動的にCloudWatchイベントとして表示されます。次に、Amazon CloudWatchイベントルールを作成します。これにより、これらのイベントは、選択したSNSトピックへの通知として表示されます。次に、そのSNSトピックをAWS ChatbotのSlackチャネルまたはAmazon Chime Webhookにマッピングします。

###AWS Health DashBoard
> AWS HealthはCloudWatchイベント通知を直接サポートしています。 AWS HealthのCloudWatchイベントルールを設定し、AWSチャットボットにマッピングされたSNSトピックを指定します。

###AWS Security Hub
> AWS Security Hubは、AWSアカウント全体の高優先度のセキュリティアラートとコンプライアンスステータスの包括的なビューを提供します。Security Hubは、Amazon GuardDuty、Amazon Inspector、Amazon Macieなどの複数のAWSサービスからのセキュリティ結果を集約、整理、および優先順位付けします。Security Hubを使用すると、AWSサービスから、およびAWSパートナーツールから、アカウント全体のセキュリティ結果を収集して優先順位を付ける作業が軽減されます。

Security HubはCloudWatchイベントルールとの2種類の統合をサポートしています。どちらもAWS Chatbotがサポートしています。

* 標準CloudWatchイベント

> Security Hubはすべての調査結果をCloudWatchイベントに自動的に送信します。生成された検出結果をAmazon Simple Storage Service（Amazon S3）バケット、修正ワークフロー、またはSNSトピックに自動的にルーティングするCloudWatchイベントルールを定義できます。この方法を使用して、すべてのセキュリティハブの結果、または特定の特性を持つすべての結果を、AWSチャットボットがサブスクライブするSNSトピックに自動的に送信します。


* セキュリティハブカスタムアクション

>  Security Hubでカスタムアクションを定義する これらのアクションに応答するようにCloudWatchイベントルールを構成します。イベントルールは、SNSトピック設定を使用して、通知をAWS ChatbotがサブスクライブするSNSトピックに転送します。

###AWS Systems Manager

> AWS Systems Managerを使用すると、AWS上のインフラストラクチャを表示および制御できます。Systems Managerコンソールを使用して、複数のAWSサービスの運用データを表示し、AWSリソース全体の運用タスクを自動化できます。Systems Managerは、管理対象インスタンスをスキャンし、検出されたポリシー違反を報告または修正することにより、セキュリティとコンプライアンスを維持するのに役立ちます。

AWS Chatbotは、次のSystems Managerイベントをサポートしています。

* Configuration compliance
* Automation
* Run command
* State manager
* Parameter store


##SlackチャネルからAWS CLIコマンドを実行する
> AWS CLI構文を使用して、AWSアカウントのSlackチャネルで直接コマンドを実行できます。AWS Chatbotを使用すると、診断情報の取得、Lambda関数の呼び出し、AWSリソースのサポートケースの作成を行うことができます。

SlackでAWSチャットボットとやり取りすると、入力を解析し、コマンドを実行する前に欠落しているパラメーターの入力を求めます。

###Slackでのコマンドの使用
> SlackワークスペースでAWSチャットボットを設定したら、Slackで次の接頭辞を付けてコマンドを実行

###SlackチャットルームでのAWS CLIコマンドの実行には、次の制限が適用

* AWS Chatbotは、AWSリソースを作成、削除、または構成するコマンド
* AWS Chatbotを介してコマンドを呼び出すと、待ち時間が発生する場合があります。
* AWS Chatbotロールの権限に関係なく、ユーザーはSlackチャネル内でIAM、AWS Security Token Service、またはAWS Key Management Serviceコマンドを実行
* Amazon S3サービスコマンドは、lsやcpなどのLinuxスタイルのコマンドエイリアスをサポートしています。AWS Chatbotは、SlackのコマンドのAmazon S3コマンドエイリアスをサポートしていません。
* ユーザーは、AWSサービスの秘密キーまたはキーペアを表示または復号化したり、IAM認証情報を渡したりすることはできません。
* SlackチャネルでAWS CLIコマンドメモリを使用することはできません（つまり、ユーザーが上矢印キーまたは下矢印キーを押すと、最近のコマンドが表示されます）。Slackチャネルに各AWS CLIコマンドを入力するか、コピーして貼り付ける必要があります。
* Slackチャネルを通じてAWSサポートケースを作成できます。Slackチャネルからこれらのケースに添付ファイルを追加することはできません。
* Slackチャネルは、標準のAWS CLIページネーションをサポートしていません。


##AWS Chatbotを使用してコマンドを実行するためのアクセス許可の管理
* ReadOnlyコマンドの権限
* Lambda-Invokeコマンドの権限
* AWSサポートコマンドのアクセス許可

##Slackチャネルで複数のアカウントがコマンドを使用できるようにする
> 同じSlackチャネルの複数のAWSアカウントに対してAWS Chatbotを設定できます。そのチャネルでAWSチャットボットを初めて使用する場合、使用するアカウントを尋ねられます。AWSチャットボットは7日間アカウントの選択を記憶します。

チャネルのデフォルトアカウントを変更するに@aws set default-account は、リストからアカウントを入力して選択します。

##AWSチャットボットのモニタリング
* Amazon CloudWatch
* Amazon CloudWatch Logs
* Trail

##AWS Chatbotのトラブルシューティング
> AWSチャットボットへのSNSトピックサブスクリプションでは、[生のメッセージ配信を有効にする]設定が有効になっています。

AWS ChatbotへのSNSトピックサブスクリプションの[ 生のメッセージ配信を有効にする] 機能を有効にしないでください