View a markdown version of this page

执行自定义代理 - AWS DevOps 代理人

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

执行自定义代理

您可以按需执行自定义代理,也可以配置触发器以自动运行它。

按需运行自定义代理

您可以立即从代理详细信息页面或通过聊天运行自定义代理。

要从详情页面运行自定义代理,请执行以下操作:

  1. 在您的代理 Web 应用程序中导航到 DevOps 代理页面。

  2. 选择要运行的自定义代理。

  3. 选择 “立即运行” 以使用其配置的指令执行代理。

要为特定运行提供更多上下文,请选择 “立即运行” 旁边的下拉箭头,输入描述代理在此调用中应重点关注的内容的提示,然后选择 “带提示运行”。该提示与其系统提示符一起作为附加上下文传递给代理。

运行开始后,新的调用将显示在 “历史记录” 选项卡中,状态为 “待启动”。选择调用以实时查看其轨迹。

要使用 Chat 运行自定义代理,请执行以下操作:

让 Chat 按名称运行代理。例如:

Run my weekly-investigation-report agent.
Run certificate-checker and focus on certificates expiring in the next 7 days.

当您在聊天消息中提供其他上下文时,Chat 会将其作为运行提示进行传递。如果您不提供其他上下文,则代理仅在配置的系统提示符下运行。

自定义代理一次只能运行一次调用。如果代理已经在运行,则必须等待当前调用完成、超时或取消后才能启动另一次调用。

配置 触发器

触发器根据定义的条件自动运行自定义代理。 AWS DevOps 代理支持两种类型的触发器:

  • 计划触发器 -使用 EventBridge-compatible cron 或速率表达式定期执行代理。

  • 事件触发器 -当 webhook 事件来自互联集成时执行代理,将事件负载作为上下文传递。

这两种触发器都是通过自定义代理的 “触发器” 选项卡创建的。要将其打开,请在您的代理 Web 应用程序中导航到 DevOps 代理页面,选择自定义代理,然后选择触发器选项卡。

创建计划触发器

计划表达式使用 EventBridge-compatible cron 或速率语法。该表达式必须是以下格式之一:

  • 速率表达式 -以固定间隔运行。格式:rate(value unit)。示例:

    • rate(1 hour)— 每小时

    • rate(30 minutes)— 每 30 分钟一次

    • rate(7 days)— 每 7 天一次

  • Cron 表达式 -按特定时间表运行。格式:cron(minutes hours day-of-month month day-of-week year)。示例:

    • cron(0 9 ? * MON-FRI *)— 每个工作日上午 9:00 UTC

    • cron(0 0 1 * ? *)— 每个月的第一天午夜 UTC

    • cron(0 */6 ? * * *)— 每 6 小时一次

对于 cron 表达式,月中某一天或一周中的某一必须是?(问号)。有关计划表达式语法的更多信息,请参阅 Amazon EventBridge Scheduler 用户指南中的计划类型。

要创建计划触发器,请执行以下操作:

  1. 选择 +(创建)按钮。

  2. 对于触发器类型,选择计划。

  3. 输入时间表表达式。当表达式有效时,将显示一条绿色确认消息。

  4. (可选)要为每次计划运行提供更多上下文,请在用户提示(可选)字段中输入提示。该提示与其系统提示符一起传递给代理。

  5. 选择创建。

创建后,触发器将出现在显示其表达式、创建日期和下次计划运行时间的列表中。

创建事件触发器

当 webhook 事件来自互联集成时,事件触发器会运行自定义代理。事件负载将作为该次运行的上下文传递给代理。

先决条件:

在创建事件触发器之前,您必须与代理空间中的活动 Webhook 进行互联集成。任何与活动 webhook 的集成都可以用作事件源。有关设置集成的更多信息,请参阅通过 Webhook 调用 DevOps 代理。

要创建事件触发器,请执行以下操作:

  1. 选择 +(创建)按钮。

  2. 对于触发器类型,选择事件。

  3. 对于事件源,选择其 webhook 事件应运行代理的集成。仅列出与活跃 Webhook 的集成。

  4. (可选)对于过滤器表达式,输入 JMESPath 表达式进行过滤,并有选择地转换事件负载。

  5. 选择创建。

如果未列出任何事件源,则代理空间中不存在支持 webhook 的集成,或者您的角色缺少和权限。ListAssociations ListWebhooks

过滤器表达式:

您可以选择指定 JMESPath 筛选表达式来控制哪些事件启动代理以及代理接收什么上下文。过滤器表达式是根据原始事件负载根进行评估的。

  • 语法 — JMESPath 规范

  • 最大长度 — 4,096 个字符

  • 验证 -创建触发器时会拒绝无效的表达式

过滤器表达式既是条件,也可以作为投影:

  • 当结果不是null、false、空字符串、空数组或空对象时,触发器将运行。

  • 当结果为布尔值true(例如,谓词之类的谓词severity == 'critical')时,代理将原始事件负载作为上下文接收。

  • 当结果为任何其他真实值(例如,投影之类的投影{sev: severity})时,代理会将投影结果作为上下文接收。

AWS DevOps 代理将此上下文截断为 10,000 个字符。

如果将筛选器表达式留空,则代理会在来自该源的每个事件上运行,并将原始事件负载作为上下文接收。

注意

计算结果为空对象或空数组的投影算作不匹配,并且代理无法运行。要传递一个可能为空的值,请将其包装在对象文字中。例如 {payload: details}。

过滤器表达式示例:

  • severity == 'critical'— 谓词:仅在严重性等于严重程度时运行代理,将原始事件负载作为上下文传递。

  • {sev: severity}— 投影:对每个事件运行代理,将仅包含严重性字段的对象作为上下文传递。由于多选哈希值始终包含其密钥,因此结果永远不会为空也不会过滤。

由于每个来源的有效载荷形状都不同,因此可用字段取决于集成。当事件到达但触发器未运行时, AWS DevOps 代理会发出一条说明原因的通知。例如,通知可能指出过滤器表达式不匹配任何内容。该通知还列出了该有效载荷中存在的顶级字段。有关更多信息,请参阅 出售的日志和指标。

以编程方式创建触发器

您还可以使用 AWS SDK 以编程方式创建触发器。调用devops-agent客户端的CreateTrigger操作,这需要aidevops:CreateTrigger权限。将触发器类型设置为,TIME_BASED并提供包含计划表达式和可选用户提示的计划条件。

或者,您可以在中将基于时间表的触发器建模为AWS::DevOpsAgent::Trigger资源。 AWS CloudFormation触发器引用其运行的自定义代理,因此请先创建该代理。有关AWS::DevOpsAgent::Trigger资源类型的更多信息,请参阅管理资产。

管理触发器

触发器选项卡显示为自定义代理配置的所有触发器。计划触发器显示其计划表达式。事件触发器显示其事件源和过滤器表达式(如果已设置)。两种类型都显示创建日期。

如果删除了源集成或其 webhook,则事件触发器仍会列出,但会显示源代码不再可用,也无法运行。

暂停触发器:

要在不删除代理的情况下暂时停止触发器调用代理,请关闭触发器旁边的拨动开关。触发器状态更改为 “已暂停”,在重新启用之前不会再运行。重新打开开关即可恢复。

删除触发器:

要永久删除触发器,请选择要移除的触发器旁边的删除图标(垃圾桶)。在出现的对话框中确认删除。已删除的触发器无法恢复。

取消调用

您可以从调用轨迹视图或通过聊天取消正在运行的调用。

要从轨迹视图中取消正在运行的调用,请执行以下操作:

  1. 从 “历史记录” 选项卡中,选择正在运行的调用。

  2. 在轨迹视图顶部选择 “取消”。

要使用 Chat 取消正在运行的调用,请执行以下操作:

Cancel the running invocation of weekly-health-report.

调用状态更改为 “已取消”。取消之前完成的任何工作都将保留在轨迹中。取消时正在进行的工具调用可能仍会完成。

工具调用结果

在调用期间,自定义代理调用 MCP 工具来收集数据、执行操作和生成输出。每次工具调用及其结果都记录在调用轨迹中。

工具调用结果可以透明地了解代理在调用期间的操作:

  • 成功调用工具 -该工具返回了代理用来继续工作的数据。例如,query_cloudwatch_logs返回日志条目或use_aws返回 API 响应。

  • 工具调用失败 -该工具返回错误。代理可能会重试、尝试其他方法或在其输出中报告故障。

您可以检查调用轨迹中的各个工具调用及其结果,以了解代理的行为,验证其访问了正确的资源,并对意外结果进行故障排除。有关查看轨迹的更多信息,请参阅查看调用轨迹。