适用于 Java 的 AWS 开发工具包版本 2
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将事件发送到 CloudWatch

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

添加事件

要添加自定义 CloudWatch 事件,请使用包含一个或多个 PutEventsRequestEntry 对象(提供每个事件的详细信息)的 PutEventsRequest 对象调用 CloudWatchEventsClientputEvents 方法。您可以为条目指定多个参数,例如事件的来源和类型、与事件相关联的资源等等。

注意

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

导入

import software.amazon.awssdk.services.cloudwatchevents.CloudWatchEventsClient; import software.amazon.awssdk.services.cloudwatchevents.model.PutEventsRequest; import software.amazon.awssdk.services.cloudwatchevents.model.PutEventsRequestEntry; import software.amazon.awssdk.services.cloudwatchevents.model.PutEventsResponse;

代码

CloudWatchEventsClient cwe = CloudWatchEventsClient.builder().build(); final String EVENT_DETAILS = "{ \"key1\": \"value1\", \"key2\": \"value2\" }"; PutEventsRequestEntry request_entry = PutEventsRequestEntry.builder() .detail(EVENT_DETAILS) .detailType("sampleSubmitted") .resources(resource_arn) .source("aws-sdk-java-cloudwatch-example").build(); PutEventsRequest request = PutEventsRequest.builder() .entries(request_entry).build(); PutEventsResponse response = cwe.putEvents(request);

请参阅 GitHub 上的完整示例

添加规则

要创建或更新规则,请使用包含规则名称和可选参数的 PutRuleRequest 调用 CloudWatchEventsClientputRule 方法,可选参数有事件模式、与规则相关联的 IAM 角色以及描述规则运行频率的计划表达式

导入

import software.amazon.awssdk.services.cloudwatchevents.CloudWatchEventsClient; import software.amazon.awssdk.services.cloudwatchevents.model.PutRuleRequest; import software.amazon.awssdk.services.cloudwatchevents.model.PutRuleResponse; import software.amazon.awssdk.services.cloudwatchevents.model.RuleState;

代码

CloudWatchEventsClient cwe = CloudWatchEventsClient.builder().build(); PutRuleRequest request = PutRuleRequest.builder() .name(rule_name) .roleArn(role_arn) .scheduleExpression("rate(5 minutes)") .state(RuleState.ENABLED) .build(); PutRuleResponse response = cwe.putRule(request);

请参阅 GitHub 上的完整示例

添加目标

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

要向规则添加目标,请使用 PutTargetsRequest(包含要更新的规则和要添加到规则的目标列表)来调用 CloudWatchEventsClientputTargets 方法。

导入

import software.amazon.awssdk.services.cloudwatchevents.CloudWatchEventsClient; import software.amazon.awssdk.services.cloudwatchevents.model.PutTargetsRequest; import software.amazon.awssdk.services.cloudwatchevents.model.PutTargetsResponse; import software.amazon.awssdk.services.cloudwatchevents.model.Target;

代码

CloudWatchEventsClient cwe = CloudWatchEventsClient.builder().build(); Target target = Target.builder() .arn(function_arn) .id(target_id) .build(); PutTargetsRequest request = PutTargetsRequest.builder() .targets(target) .rule(rule_name) .build(); PutTargetsResponse response = cwe.putTargets(request);

请参阅 GitHub 上的完整示例

更多信息