利用 AWS Chatbot 迅速在 Slack 上進行操作與監控
簡介
Slack 是一個企業團隊與成員溝通的通訊平台,某些開發者為了簡化作業流程進而在頻道中打造了半自動化的 Chatbot,讓使用者可以直接透過訊息與 Chatbot 互動,以節省時間與人力。目前已有許多軟體支援與 Slack 整合並可在頻道中創建專屬的 Chatbot,大幅促進了 Chatbot 的發展。
AWS 於 2019 年初宣布了 AWS Chatbot 的 Beta 版,可協助團隊透過 Slack 頻道或 Amazon Chime 聊天室接收 AWS 通知,此服務剛宣佈的時候,並沒有太多令人注目的功能,因此沒有被廣泛討論。
Source : https://aws.amazon.com/blogs/devops/running-aws-commands-from-slack-using-aws-chatbot/
直到 AWS Chatbot 推出了一個新功能,讓使用者於 Slack 頻道中執行類似於 AWS CLI 的指令。例如:我們想知道現在所有的 Lambda Function 有哪些? 目前 CloudWatch Alarm 的狀態、觸發 Lambda Function 和發 Support Case 等;但由於此功能尚未成熟,目前只支援部分 CLI 的功能,我們將在下文中介紹。
前置作業
相信有用過 AWS 的讀者們都知道,AWS 對於 權限控管 這方面一直有非常高的要求, AWS Chatbot 也不例外。我們需要在 Chatbot 的主控台中透過 IAM Role 給予 Chatbot 能夠存取相關服務的權限。換言之,倘若 AWS Chatbot 擁有了 CloudWatch 的權限,代表使用者能夠透過 Slack 中的 Chatbot 取得 CloudWatch 的相關訊息。因此使用者務必在設置時考慮後續會使用的功能,並且給予適當的 IAM Role。
若讀者想測試的話,請先準備以下項目:
- AWS 帳號
- Slack 頻道
設置方法
請務必準備好 AWS 帳號與 Slack 頻道
首先,我們需要將 AWS Chatbot 與 Slack Channel 連接起來。
-
在 AWS Chatbot 控制台中,在 Configured clients 下拉列表中選擇 Slack
-
然後選擇 Configure new client。
-
於左上角選擇要配置的 Slack Workspace,然後選擇 Allow。
-
此時會跳轉到 Configure Slack Channel 頁面中,在此可以選擇:
- Chatbot 運作的頻道
> 選擇 Chatbot 位於哪個 Slack 頻道中運作 - Chatbot 的相關權限
> 在這裡給的權限會影響到 Chatbot 是否能在 Slack 頻道中正常運作。 - 是否傳送 SNS 通知
> 倘若有設置 CloudWatch Alarm 或 Support 有回覆,會透過 SNS 通知
- Chatbot 運作的頻道
-
設置完成後,就可以將畫面切換到 Slack 頻道中。
-
第一次設置時,我們需要邀請名為 @aws 的 Chatbot 進入該頻道,所以我們先點選上一步驟的設置中所選的頻道。
-
並於頻道中輸入
/invite @aws
。
- 使用者可以輸入
@aws help
來查詢互動方法。
當我們能夠看到以上訊息時就代表 Chatbot 已經設置成功了!
以下是幾個對於開發人員來說較為實用的功能。
監控 AWS 資源
首先要介紹的功能是透過 Chatbot 來查看 CloudWatch Alarm 的狀態,這對維運人員來說是一大福音,可以不用切換畫面到主控台中,直接透過熟悉的 AWS CLI 方式迅速查詢。
- 輸入
@aws cloudwatch describe-alarms --region us-east-1
,便會顯示該 Region 中的所有 CloudWatch Alarm。
- 此外還可以透過
--state ALARM
參數來過濾訊息,在此嘗試輸入@aws cloudwatch describe-alarms --state ALARM
來查看目前狀態為 ALARM 的警告。
查詢與觸發 Lambda Function
第二個功能則是能夠迅速查詢 Lambda Function 的相關指令。
- 輸入
@aws lambda list-functions
,便可查詢所有的 Lambda Function。
- 當我們找到想要查看的 Lambda 後,便可以輸入
@aws lambda get-function –-function-name FUNCTIONNAME
,此時 Chatbot 便會將此 Lambda 的相關資訊顯示出來。
- 找到想要觸發的 Lambda 且記下名稱後輸入
@aws lambda invoke FUNCTIONNAME
便可觸發這隻 Lambda。
Support Case 與推播通知
另一個讓人注目的功能就是能夠透過 Chatbot 發 Support Case,但使用者必須先訂閱 AWS Support Plan 才有辦法使用此功能。
- 在頻道中輸入
@aws support create-case
後,Chatbot 會要求使用者回覆相關訊息,例如:Support Case 的主題@aws subject SUBJECT STRING
使用者必須直接使用文字輸入 Support 內容,無法上傳檔案。
如此一來就完成 Support Case 的流程,倘若 AWS Support 有任何的回覆,Chatbot 也都會透過 SNS 通知使用者。
總結
讓使用者能透過 Slack 運行 AWS CLI 大幅提升了 AWS Chatbot 的功能性,這有助於團隊能夠立即接收訊息並做出反應,而且此服務不需要任何的費用,只需要針對使用的基礎服務付費(Lambda、CloudWatch…),但仍然希望未來能夠支援更多的 CLI 功能,讓此功能變得更加完善。