CloudWatch에 이벤트 전송 - AWS SDK for C++

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CloudWatch에 이벤트 전송

CloudWatch Events는 AWS 리소스의 변경 사항을 설명하는 시스템 이벤트의 실시간에 가까운 시스템 이벤트 스트림을 Amazon EC2 인스턴스, Lambda 함수, Kinesis 스트림, Amazon ECS 태스크, Step Functions 상태 머신, Amazon SNS 주제, Amazon SQS 대기열 또는 기본 제공 대상으로 전송합니다. 단순 규칙을 사용하여 일치하는 이벤트를 검색하고 하나 이상의 대상 함수 또는 스트림으로 이를 라우팅할 수 있습니다.

참고

이 코드 스니펫은 사용자가 AWS SDK for C++ 사용 시작하기의 내용을 이해하고 있으며, AWS 자격 증명 개발의 정보를 사용하여 기본 AWS 자격 증명을 구성했다고 가정합니다.

이벤트 추가

사용자 지정 CloudWatch 이벤트를 추가하려면 CloudWatchEventsClient의 PutEvents 함수를 호출합니다. 이때, 각 이벤트에 대한 세부 정보를 제공하는 PutEventsRequestEntry 객체를 하나 이상 포함하는 PutEventsRequest 객체를 함께 사용합니다. 이벤트 유형 및 소스, 이벤트와 연결된 리소스 등 입력 항목에 대한 여러 파라미터를 지정할 수 있습니다.

참고

putEvents 호출당 최대 10개 이벤트를 지정할 수 있습니다.

포함 파일

#include <aws/core/Aws.h> #include <aws/events/EventBridgeClient.h> #include <aws/events/model/PutEventsRequest.h> #include <aws/events/model/PutEventsResult.h> #include <aws/core/utils/Outcome.h> #include <iostream>

코드

Aws::CloudWatchEvents::EventBridgeClient cwe; Aws::CloudWatchEvents::Model::PutEventsRequestEntry event_entry; event_entry.SetDetail(MakeDetails(event_key, event_value)); event_entry.SetDetailType("sampleSubmitted"); event_entry.AddResources(resource_arn); event_entry.SetSource("aws-sdk-cpp-cloudwatch-example"); Aws::CloudWatchEvents::Model::PutEventsRequest request; request.AddEntries(event_entry); auto outcome = cwe.PutEvents(request); if (!outcome.IsSuccess()) { std::cout << "Failed to post CloudWatch event: " << outcome.GetError().GetMessage() << std::endl; } else { std::cout << "Successfully posted CloudWatch event" << std::endl; }

규칙 추가

규칙을 생성하거나 업데이트하려면 CloudWatchEventsClient의 PutRule 함수를 호출합니다. 이때 규칙 이름과 선택적 파라미터(이벤트 패턴, 규칙과 연결할 IAM 역할, 규칙의 실행 빈도를 설명하는 예약 표현식)를 PutRuleRequest와 함께 사용합니다.

포함 파일

#include <aws/core/Aws.h> #include <aws/events/EventBridgeClient.h> #include <aws/events/model/PutRuleRequest.h> #include <aws/events/model/PutRuleResult.h> #include <aws/core/utils/Outcome.h> #include <iostream>

코드

Aws::CloudWatchEvents::EventBridgeClient cwe; Aws::CloudWatchEvents::Model::PutRuleRequest request; request.SetName(rule_name); request.SetRoleArn(role_arn); request.SetScheduleExpression("rate(5 minutes)"); request.SetState(Aws::CloudWatchEvents::Model::RuleState::ENABLED); auto outcome = cwe.PutRule(request); if (!outcome.IsSuccess()) { std::cout << "Failed to create CloudWatch events rule " << rule_name << ": " << outcome.GetError().GetMessage() << std::endl; } else { std::cout << "Successfully created CloudWatch events rule " << rule_name << " with resulting Arn " << outcome.GetResult().GetRuleArn() << std::endl; }

대상 추가

대상은 규칙이 트리거될 때 호출되는 리소스입니다. 대상의 예시로는 Amazon EC2 인스턴스, Lambda 함수, Kinesis 스트림, Amazon ECS 태스크, Step Functions 상태 머신, 기본 제공 대상 등이 있습니다.

규칙에 대상을 추가하려면 CloudWatchEventsClient의 PutTargets 함수를 호출합니다. 이때 업데이트할 규칙과 규칙에 추가할 대상 목록을 포함하여 PutTargetsRequest를 함께 사용합니다.

포함 파일

#include <aws/core/Aws.h> #include <aws/events/EventBridgeClient.h> #include <aws/events/model/PutTargetsRequest.h> #include <aws/events/model/PutTargetsResult.h> #include <aws/core/utils/Outcome.h> #include <iostream>

코드

Aws::CloudWatchEvents::EventBridgeClient cwe; Aws::CloudWatchEvents::Model::Target target; target.SetArn(lambda_arn); target.SetId(target_id); Aws::CloudWatchEvents::Model::PutTargetsRequest request; request.SetRule(rule_name); request.AddTargets(target); auto putTargetsOutcome = cwe.PutTargets(request); if (!putTargetsOutcome.IsSuccess()) { std::cout << "Failed to create CloudWatch events target for rule " << rule_name << ": " << putTargetsOutcome.GetError().GetMessage() << std::endl; } else { std::cout << "Successfully created CloudWatch events target for rule " << rule_name << std::endl; }

전체 예제를 참조하세요.

추가 정보