手动触发 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 - 计划事件触发太频繁