먼저 SDK는 Software Development Kit의 줄임말입니다. api,라이브러리 등 개발하는데 도움을 주는 것들을 모아둔 것이라 보면 됩니다.
AWS SDK는 프로그래밍 언어로 AWS 서비스를 조작할 수 있게 해주는 라이브러리입니다.
"AWS SDK를 사용하면 Amazon S3,Amazon EC2, Amazon SimpleDB 등에서 작동하는 Java 애플리케이션을 쉽게 빌드할 수 있습니다"
aws에 가입하고 IAM 사용자를 생성합니다.
필요한 서비스들을 만듭니다.
aws sdk로 aws IAM에 접근하기 위해 IAM 계정을 만들면서 발급받은 접근키와 region이 필요합니다. 파일로 특정 위치에 두면 알아서 해준다고 나와있습니다. 접근키는 credentials 파일, region은 config 파일에 저장되어 있어야 합니다. 저는 따로 설정한 기억은 없는데 저 위치에 파일이 만들어져 있네요.
저는 스프링 프로젝트를 생성하고 maven을 이용했습니다. maven같은 빌드툴은 의존만 추가하면 알아서 다운받아주니 이 방법을 사용하는 것이 더 낫습니다. 테스트로 ec2를 다뤄볼 것이기 때문에 ec2관련 의존만 추가합니다.
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>ec2</artifactId>
<version>2.13.0</version>
</dependency>
모든 의존을 추가하는 것은 권장되지 않지만 아래와 같습니다.
<project>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>aws-sdk-java</artifactId>
<version>2.X.X</version> <!--사용할 버전을 입력해줍니다-->
</dependency>
</dependencies>
</project>
maven update를 해주면 이제 aws 라이브러리? api?를 사용할 수 있게 됩니다.
아마존 sdk 설명서에 나와 있는 코드를 참고했습니다.
package com.roon.aws;
import java.util.ArrayList;
import java.util.List;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesResponse;
import software.amazon.awssdk.services.ec2.model.Ec2Exception;
import software.amazon.awssdk.services.ec2.model.Instance;
import software.amazon.awssdk.services.ec2.model.Reservation;
public class AwsSdkSample {
public static void main(String[] args) {
AwsSdkSample sample = new AwsSdkSample();
//An Amazon Web Services region that hosts a set of Amazon services.
Region region=Region.AP_NORTHEAST_2; //seoul region
Ec2Client ec2= Ec2Client. //Service client for accessing Amazon EC2.
builder(). //Create a builder that can be used to configure and create a Ec2Client.
region(region). //Configure the region with which the SDK should communicate.
build(); //An immutable object that is created from theproperties that have been set on the builder.
sample.describeEC2Instances(ec2);
}
public void describeEC2Instances( Ec2Client ec2){
boolean done = false;
String nextToken = null;
try {
do {
DescribeInstancesRequest request =
DescribeInstancesRequest.builder().maxResults(6).nextToken(nextToken).build();
DescribeInstancesResponse response = ec2.describeInstances(request);
//Describes the specified instances or all of AWS account's instances.
for (Reservation reservation : response.reservations()) {
for (Instance instance : reservation.instances()) {
System.out.printf(
"Found Reservation with id %s\n, " +
"AMI %s\n, " +
"type %s\n, " +
"state %s\n " +
"and monitoring state %s\n",
instance.instanceId(),
instance.imageId(),
instance.instanceType(),
instance.state().name(), //current state of the instance
instance.monitoring().state()); //모니터링 되고 있는지
System.out.println("");
}
}
nextToken = response.nextToken();
} while (nextToken != null);
} catch (Ec2Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
}
실행해 보면 다음과 같이 인스턴스의 정보가 나옵니다.