本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 AWS DevOps 代理程式與 Amazon EventBridge 整合
您可以使用調查和緩解生命週期期間發生的事件,將 AWS DevOps 代理程式與您的事件驅動型應用程式整合。 AWS DevOps 代理程式會在調查或緩解狀態變更時將事件傳送至 Amazon EventBridge。然後,您可以建立 EventBridge 規則,根據這些事件採取動作。
例如,您可以建立執行下列動作的規則:
當調查完成時,叫用 AWS Lambda 函數來處理調查結果。
調查失敗或逾時時傳送 Amazon SNS 通知。
建立新的調查時更新票證系統。
在緩解動作完成時啟動 AWS Step Functions 工作流程。
EventBridge 如何路由 AWS DevOps 代理程式事件
AWS DevOps Agent 會將事件傳送至 EventBridge 預設事件匯流排。然後EventBridge 會根據您建立的規則評估事件。當事件符合規則的事件模式時,EventBridge 會將事件傳送至指定的目標。
下圖顯示 EventBridge 如何路由 AWS DevOps 代理程式事件。
當調查或緩解生命週期狀態變更時,AWS DevOps 代理程式會將事件傳送至 EventBridge 預設事件匯流排。
EventBridge 會根據您建立的規則評估事件。
如果事件符合規則的事件模式,EventBridge 會將事件傳送至規則中指定的目標。
AWS DevOps 代理程式事件
AWS DevOps 代理程式會將下列事件傳送至 EventBridge。所有事件都使用來源 aws.aidevops。
AWS DevOps 代理程式會發出這些事件進行調查,包括調查的緩解階段。其他類型的客服人員工作,例如事件預防評估和自訂客服人員調用,不會發出這些事件。
每個事件的 time 欄位是調查或緩解措施上次更新的時間,而不是 EventBridge 收到事件的時間。沒有值的欄位會從 省略,detail而不是設定為 null。
支援的調查事件
| 詳細資訊類型 | 說明 |
|---|---|
Investigation Created |
已在客服人員空間中建立調查。 |
Investigation Priority Updated |
調查的優先順序已變更。 |
Investigation In Progress |
調查已開始主動分析。 |
Investigation Completed |
調查結果已成功完成調查。 |
Investigation Failed |
調查發生錯誤,無法完成。 |
Investigation Timed Out |
調查超過允許的持續時間上限。 |
Investigation Cancelled |
調查在完成之前已取消。 |
Investigation Pending Triage |
在主動分析開始之前,調查正在等待分類。 |
Investigation Linked |
調查已連結至相關事件或票證。 |
Investigation Skipped |
調查已略過,因為它符合技能中定義的略過條件。事件不包含略過調查的原因。 |
支援的緩解事件
| 詳細資訊類型 | 說明 |
|---|---|
Mitigation In Progress |
已啟動緩解動作。 |
Mitigation Completed |
已成功完成緩解動作。 |
Mitigation Failed |
緩解動作發生錯誤,無法完成。 |
Mitigation Timed Out |
緩解動作超過允許的持續時間上限。 |
Mitigation Cancelled |
緩解動作已在完成之前取消。 |
如需詳細的欄位描述和範例事件,請參閱 AWS DevOps Agent 事件詳細資訊參考。
建立符合 AWS DevOps 代理程式事件的事件模式
EventBridge 規則使用事件模式來選取事件並將其路由至目標。事件模式與其處理的 事件結構相符。您可以建立事件模式,根據事件欄位篩選 AWS DevOps 代理程式事件。
下列範例顯示常見使用案例的事件模式。
比對 all AWS DevOps 代理程式事件
下列事件模式符合來自 AWS DevOps Agent 的所有事件。
{ "source": ["aws.aidevops"] }
僅比對調查事件
下列事件模式使用字首比對來僅選取調查生命週期事件。
{ "source": ["aws.aidevops"], "detail-type": [{"prefix": "Investigation"}] }
僅比對完成和失敗事件
下列事件模式符合已完成或失敗的調查和緩解措施的事件。
{ "source": ["aws.aidevops"], "detail-type": [ "Investigation Completed", "Investigation Failed", "Mitigation Completed", "Mitigation Failed" ] }
比對特定客服人員空間的事件
下列事件模式符合來自特定客服人員空間的事件。
{ "source": ["aws.aidevops"], "detail": { "metadata": { "agent_space_id": ["your-agent-space-id"] } } }
如需有關事件模式的相關資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon EventBridge 事件規則。
擷取調查或緩解摘要
Completed 事件可識別客服人員產生的摘要,但不包含摘要文字。摘要會儲存為日誌記錄。若要讀取,請使用從事件取得的值呼叫 ListJournalRecords 操作。
| 來自事件的值 | `ListJournalRecords` 參數 |
|---|---|
detail.metadata.agent_space_id |
agentSpaceId (必要) |
detail.metadata.execution_id |
executionId (必要) |
| 不在事件中 | recordType — investigation_summary_md用於調查摘要,或mitigation_summary_md用於緩解摘要 |
ListJournalRecords 傳回 JournalRecord 物件的清單。執行可以有多個相同類型的摘要記錄。選取recordId符合 的記錄detail.data.summary_record_id,然後讀取其 content. AWS DevOps 代理程式沒有依 ID 傳回單一日誌記錄的操作。
在 上建置之前,請注意下列事項summary_record_id:
只有當為執行寫入摘要記錄時, 欄位才會存在。沒有它
Completed的事件表示該執行沒有可用的摘要,因此您必須處理其不存在。Failed、Timed Out和Cancelled事件永遠不會包含它。若要擷取摘要,您需要執行事件取用者的帳戶中的
aidevops:ListJournalRecords許可。
如需許可的詳細資訊,請參閱「DevOps Agent IAM 許可」。
使用 CLI AWS 擷取摘要
下列命令會列出 執行的調查摘要記錄:
aws devops-agent list-journal-records \ --agent-space-id e5f6g7h8-9012-34ab-cdef-example00000 \ --execution-id b2c3d4e5-6789-01ab-cdef-example22222 \ --record-type investigation_summary_md
在 AWS Lambda 中處理完成的調查
下列 Python 函數顯示規則目標處理這些事件的一種方式。這是範例,不是必要的實作。EventBridge 支援其他目標類型,您的目標決定如何處理事件。此範例會讀取已完成調查的摘要,並忽略沒有摘要的事件:
import boto3 devops_agent = boto3.client("devops-agent") INVESTIGATION_SUMMARY = "investigation_summary_md" MITIGATION_SUMMARY = "mitigation_summary_md" def lambda_handler(event, context): detail = event["detail"] metadata = detail["metadata"] data = detail["data"] summary_record_id = data.get("summary_record_id") if not summary_record_id: # A completed task does not always produce a summary. return {"summary": None} record_type = ( MITIGATION_SUMMARY if event["detail-type"].startswith("Mitigation") else INVESTIGATION_SUMMARY ) paginator = devops_agent.get_paginator("list_journal_records") pages = paginator.paginate( agentSpaceId=metadata["agent_space_id"], executionId=metadata["execution_id"], recordType=record_type, ) for page in pages: for record in page["records"]: if record["recordId"] == summary_record_id: return {"summary": record["content"]} return {"summary": None}
使用 detail-type 來決定要請求的記錄類型。調查和緩解事件都會報告data.task_type為 INVESTIGATION,因此 task_type 不會區分它們。
Amazon EventBridge 許可
AWS DevOps Agent 不需要額外的許可,即可將事件交付至 EventBridge。事件會自動傳送至預設事件匯流排。
根據您為 EventBridge 規則設定的目標,您可能需要新增特定許可。如需目標所需許可的詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的使用 Amazon EventBridge 的資源型政策。 EventBridge
額外 EventBridge 資源
如需 EventBridge 概念和組態的詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的下列主題: