自2024年7月31日起, AWS SDK for Java 1.x已进入维护模式,并将于2025年12月31日end-of-support
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将事件发送到 CloudWatch
CloudWatch Events 提供几乎实时的系统事件流,这些事件描述 AWS 资源中对 Amazon EC2 实例、Lambda 函数、Kinesis 流、Amazon ECS 任务、 Step Functions 状态机、Amazon SNS 主题、Amazon SQS 队列或内置目标的更改。通过使用简单的规则,您可以匹配事件并将事件路由到一个或多个目标函数或流。
添加事件
要添加自定义 CloudWatch 事件,请使用包含一个或多个 PutEventsRequestEntry 对象(提供每个事件的详细信息)的 PutEventsRequest 对象调用 AmazonCloudWatchEventsClient 的 putEvents
方法。您可以为条目指定多个参数,例如事件的来源和类型、与事件相关联的资源等等。
注意
对于每个 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);
添加规则
要创建或更新规则,请使用包含规则名称和可选参数的 PutRuleRequest 调用 AmazonCloudWatchEventsClient 的 putRule
方法,可选参数如事件模式、与规则相关联的 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 状态机和内置目标。
要向规则添加目标,请使用 PutTargetsRequest(包含要更新的规则和要添加到规则的目标列表)来调用 AmazonCloudWatchEventsClient 的 putTargets
方法。
导入
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);
更多信息
-
《Amazon CloudWatch Events User Guide》中的 Adding Events with PutEvents
-
《Amazon CloudWatch Events User Guide》中的 Schedule Expressions for Rules
-
《Amazon CloudWatch Events User Guide》中的 Event Types for CloudWatch Events
-
《Amazon CloudWatch Events User Guide》中的 Events and Event Patterns
-
《Amazon CloudWatch Events API Reference》中的 PutEvents
-
《Amazon CloudWatch Events API Reference》中的 PutTargets
-
《Amazon CloudWatch Events API Reference》中的 PutRule