자습서: AWS Health API와 Java 사용 예제
다음 Java 코드 예제에서는 AWS Health 클라이언트를 시작하고 이벤트 및 엔터티에 대한 정보를 검색하는 방법을 보여줍니다.
1단계: 자격 증명 초기화
AWS Health API와 통신하려면 유효한 자격 증명이 필요합니다. AWS 계정과 연결된 모든 IAM 사용자의 키 페어를 사용할 수 있습니다.
AWSCredentials 인스턴스를 만들고 초기화합니다.
AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider("default").getCredentials(); } catch (Exception e) { throw new AmazonClientException( "Cannot load the credentials from the credential profiles file. " + "Please make sure that your credentials file is at the correct " + "location (/home/username/.aws/credentials), and is in valid format.", e); }
2단계: AWS Health API 클라이언트 초기화
이전 단계에서 초기화한 자격 증명 객체를 사용하여 AWS Health 클라이언트를 만듭니다.
import com.amazonaws.services.health.AWSHealthClient; AWSHealth awsHealthClient = new AWSHealthClient(credentials);
3단계: AWS Health API 작업을 사용하여 이벤트 정보 가져오기
DescribeEvents
import com.amazonaws.services.health.model.DescribeEventsRequest; import com.amazonaws.services.health.model.DescribeEventsResult; import com.amazonaws.services.health.model.Event; import com.amazonaws.services.health.model.EventFilter; DescribeEventsRequest request = new DescribeEventsRequest(); EventFilter filter = new EventFilter(); // Filter on any field from the supported AWS Health EventFilter model. // Here is an example for Region us-east-1 events from the EC2 service. filter.setServices(singletonList("EC2")); filter.setRegions(singletonList("us-east-1")); request.setFilter(filter); DescribeEventsResult response = awsHealthClient.describeEvents(request); List<Event> resultEvents = response.getEvents(); Event currentEvent = null; for (Event event : resultEvents) { // Display result event data; here is a subset. System.out.println(event.getArn()); System.out.println(event.getService()); System.out.println(event.getRegion()); System.out.println(event.getAvailabilityZone()); System.out.println(event.getStartTime()); System.out.println(event.getEndTime()); }
DescribeEventAggregates
import com.amazonaws.services.health.model.DescribeEventAggregatesRequest; import com.amazonaws.services.health.model.DescribeEventAggregatesResult; import com.amazonaws.services.health.model.EventAggregate; import com.amazonaws.services.health.model.EventFilter; DescribeEventAggregatesRequest request = new DescribeEventAggregatesRequest(); // set the aggregation field request.setAggregateField("eventTypeCategory"); // filter more on result if needed EventFilter filter = new EventFilter(); filter.setRegions(singleton("us-east-1")); request.setFilter(filter); DescribeEventAggregatesResult response = awsHealthClient.describeEventAggregates(request); // print event count for each eventTypeCategory for (EventAggregate aggregate: response.getEventAggregates()) { System.out.println("Event Category:" + aggregate.getAggregateValue()); System.out.println("Event Count:" + aggregate.getCount()); }
DescribeEventDetails
import com.amazonaws.services.health.model.DescribeEventDetailsRequest; import com.amazonaws.services.health.model.DescribeEventDetailsResult; import com.amazonaws.services.health.model.Event; import com.amazonaws.services.health.model.EventDetails; DescribeEventDetailsRequest describeEventDetailsRequest = new DescribeEventDetailsRequest(); // set event ARN and local value describeEventDetailsRequest.setEventArns(singletonList("arn:aws:health:us-east-1::event/
service
/eventTypeCode
/eventId
")); describeEventDetailsRequest.setLocale("en-US"); filter.setEventArns DescribeEventDetailsResult describeEventDetailsResult = awsHealthClient.describeEventDetails(request); EventDetails eventDetail = describeEventDetailsResult.getSuccessfulSet().get(0); // check event-related fields Event event = eventDetail.getEvent(); System.out.println(event.getService()); System.out.println(event.getRegion()); System.out.println(event.getAvailabilityZone()); System.out.println(event.getStartTime()); System.out.println(event.getEndTime()); // print out event description System.out.println(eventDetail.getEventDescription().getLatestDescription());
DescribeAffectedEntities
import com.amazonaws.services.health.model.AffectedEntity; import com.amazonaws.services.health.model.DateTimeRange; import com.amazonaws.services.health.model.DescribeAffectedEntitiesRequest; import com.amdescribeEventDetailsRequestazonaws.services.health.model.DescribeAffectedEntitiesResult; DescribeAffectedEntitiesRequest request = new DescribeAffectedEntitiesRequest(); EntityFilter filter = new EntityFilter(); filter.setEventArns(singletonList("arn:aws:health:us-east-1::event/
service
/eventTypeCode
/eventId
")); DescribeAffectedEntitiesResult response = awsHealthClient.describeAffectedEntities(request); for (AffectedEntity affectedEntity: response.getEntities()) { System.out.println(affectedEntity.getEntityValue()); System.out.println(affectedEntity.getAwsAccountId()); System.out.println(affectedEntity.getEntityArn()); }
DescribeEntityAggregates
import com.amazonaws.services.health.model.DescribeEntityAggregatesRequest; import com.amazonaws.services.health.model.DescribeEntityAggregatesResult; import com.amazonaws.services.health.model.EntityAggregate; DescribeEntityAggregatesRequest request = new DescribeEntityAggregatesRequest(); request.setEventArns(singletonList("arn:aws:health:us-east-1::event/
service
/eventTypeCode
/eventId
")); DescribeEntityAggregatesResult response = awsHealthClient.describeEntityAggregates(request); for (EntityAggregate entityAggregate : response.getEntityAggregates()) { System.out.println(entityAggregate.getEventArn()); System.out.println(entityAggregate.getCount()); }