手动触发 AWS CloudWatch 事件

Posted

技术标签:

【中文标题】手动触发 AWS CloudWatch 事件【英文标题】:Trigger AWS CloudWatch Event Manually 【发布时间】:2020-01-21 20:58:17 【问题描述】:

我在 CloudWatch 中有一个事件,每天触发一次。有没有办法手动触发事件(用于测试目的)?

...我意识到我可以增加事件触发时间表的频率。

【问题讨论】:

触发什么?如果是 lambda,那么解决方案可能会更容易。 我想触发事件本身以确保授予它的权限以及连接到它调用的东西(一个步进函数)是正确的。我已经独立运行了 step 函数来测试它的流程。 【参考方案1】:

如果您设置了 cloudwatch 警报,则出于测试目的,您可以使用 AWS CLI 设置该警报的警报状态:

aws cloudwatch set-alarm-state --alarm-name "myalarm" --state-value ALARM --state-reason "testing purposes"

见docs here

您也可以put a custom event,也可以使用 CLI 或 SDK

【讨论】:

我没有通过警报触发事件。它是按计划触发的。但是,抛开语义不谈,这是一个有用的解决方法。这类似于(在意图/想法上)调整活动的时间表。 有没有办法通过 UI 做到这一点?【参考方案2】:

我找到的另一个解决方案是禁用然后重新启用规则:

aws events disable-rule --name "my_scheduled_rule"
aws events enable-rule --name "my_scheduled_rule"

也许不是最好的路线,而是一种选择……

【讨论】:

【参考方案3】:

我还没有找到(而且我认为不可能)手动触发计划的触发器。但是正如 danimal 所提到的,您可以放置​​一个自定义事件来触发它。

# update your rule to trigger on a dummy-event source
# put-rule updates a rule if it exists or creates a new one if it doesn't
aws events put-rule --name "my-rule" --event-pattern "\"source\":[\"karlanka\"]"
    
# send an event with the same dummy source to trigger the rule
# Detail and DetailType are required but not used
aws events put-events --entries '["Source":"karlanka","DetailType":"X","Detail":""]'
    
# then change the rule back to your schedule
aws events put-rule --name "my-rule" --schedule-expression "rate(12 hours)"

【讨论】:

以上是关于手动触发 AWS CloudWatch 事件的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cloudwatch/Lambda - 计划事件触发太频繁

AWS Lambda函数由CloudWatch事件触发两次

Aws Lambda 收集 CloudWatch 事件

Terraform 多个 cloudwatch 事件触发相同的 lambda 函数

AWS Cloudwatch + ECS - 设置啥权限?

如何匹配 aws cloudwatch 日志中的多个模式以触发 lambda