将 事件发送到 CloudWatch - 适用于 Java 的 AWS 软件开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

将 事件发送到 CloudWatch

CloudWatch Events 提供几乎实时的系统事件流,这些事件描述 AWS 资源中对 Amazon EC2 实例、Lambda 函数、Kinesis 流、Amazon ECS 任务、 Step Functions 状态机、Amazon SNS 主题、Amazon SQS 队列或内置目标的更改。通过使用简单的规则,您可以匹配事件并将事件路由到一个或多个目标函数或流。

添加事件

要添加自定义CloudWatch事件,请使用包含一个或多个 AmazonCloudWatchEventsClientPutEventsRequestputEventsPutEventsRequestEntry 对象调用 的 方法。您可以为条目指定多个参数,例如事件的来源和类型、与事件相关联的资源等等。

注意

对于每个 putEvents 调用,您最多可以指定 10 个事件。

导入

import com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEvents; import com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClientBuilder; import com.amazonaws.services.cloudwatchevents.model.PutEventsRequest; import com.amazonaws.services.cloudwatchevents.model.PutEventsRequestEntry; import com.amazonaws.services.cloudwatchevents.model.PutEventsResult;

代码

final AmazonCloudWatchEvents cwe = AmazonCloudWatchEventsClientBuilder.defaultClient(); final String EVENT_DETAILS = "{ \"key1\": \"value1\", \"key2\": \"value2\" }"; PutEventsRequestEntry request_entry = new PutEventsRequestEntry() .withDetail(EVENT_DETAILS) .withDetailType("sampleSubmitted") .withResources(resource_arn) .withSource("aws-sdk-java-cloudwatch-example"); PutEventsRequest request = new PutEventsRequest() .withEntries(request_entry); PutEventsResult response = cwe.putEvents(request);

添加规则

要创建或更新规则,请使用 AmazonCloudWatchEventsClientPutRuleRequestputRule 调用 方法,并提供规则名称和可选参数,例如事件模式、要与规则关联的 IAM 角色以及描述规则运行频率的计划表达式

导入

import com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEvents; import com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClientBuilder; import com.amazonaws.services.cloudwatchevents.model.PutRuleRequest; import com.amazonaws.services.cloudwatchevents.model.PutRuleResult; import com.amazonaws.services.cloudwatchevents.model.RuleState;

代码

final AmazonCloudWatchEvents cwe = AmazonCloudWatchEventsClientBuilder.defaultClient(); PutRuleRequest request = new PutRuleRequest() .withName(rule_name) .withRoleArn(role_arn) .withScheduleExpression("rate(5 minutes)") .withState(RuleState.ENABLED); PutRuleResult response = cwe.putRule(request);

添加目标

目标是触发规则时调用的资源。示例目标包括 Amazon EC2 实例、Lambda 函数、Kinesis 流、Amazon ECS 任务、Step Functions 状态机和内置目标。

要将目标添加到规则,请使用 AmazonCloudWatchEventsClientPutTargetsRequestputTargets 调用 方法,并提供要更新的规则和要添加到规则的目标列表。

导入

import com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEvents; import com.amazonaws.services.cloudwatchevents.AmazonCloudWatchEventsClientBuilder; import com.amazonaws.services.cloudwatchevents.model.PutTargetsRequest; import com.amazonaws.services.cloudwatchevents.model.PutTargetsResult; import com.amazonaws.services.cloudwatchevents.model.Target;

代码

final AmazonCloudWatchEvents cwe = AmazonCloudWatchEventsClientBuilder.defaultClient(); Target target = new Target() .withArn(function_arn) .withId(target_id); PutTargetsRequest request = new PutTargetsRequest() .withTargets(target) .withRule(rule_name); PutTargetsResult response = cwe.putTargets(request);

更多信息

  • 中的使用 PutEvents 添加事件Amazon CloudWatch Events User Guide

  • 中的规则的计划表达式Amazon CloudWatch Events User Guide

  • 中的 CloudWatch Events 的事件类型Amazon CloudWatch Events User Guide

  • 中的事件和事件模式Amazon CloudWatch Events User Guide

  • 中的 PutEventsAmazon CloudWatch Events API Reference

  • 中的 PutTargetsAmazon CloudWatch Events API Reference

  • 中的 PutRuleAmazon CloudWatch Events API Reference