113. AWS SDK for Java Quick Start - qyjohn/AWS_Tutorials GitHub Wiki
In this tutorial we provide some entry-level guidance on using the AWS SDK for Java. We use EC2 and DynamoDB as examples. It is OK if you have no idea about what Java is. We will learn that slowly over time.
(1) Installing the Java Development Kit (JDK)
There are different JDK's. The official one is called the Oracle JDK, while the unofficial (open source) one is called OpenJDK. You only need one of them on your operating system. For each JDK, there are different versions. For beginners we recommend that you only want one particular JDK on your operating system (and only one version). If you have too many of them on the same operating system, you might get confused easily.
Assuming that you are running Ubuntu, you can install the latest version of the Oracle JDK using the following commands:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt update; sudo apt install oracle-java8-installer
$ javac -version
javac 1.8.0_121
$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
If you want to use OpenJDK, you can install it using the following commands:
$ sudo apt update; sudo apt install openjdk-8-jdk
$ javac -version
javac 1.8.0_151
$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
(2) Downloading and Configuring the AWS SDK for Java
Next we will need to download and install the AWS SDK for Java. Depending on when you download the AWS SDK for Java, you will get a different version number when you unzip aws-java-sdk.zip. In my case I have aws-java-sdk-1.11.304.
$ cd ~
$ wget https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip
$ sudo apt-get install zip
$ unzip aws-java-sdk.zip
In Java, there is a concept called CLASSPATH, which is similar to the PATH environment variable. In short, the Java Virtual Machine (JVM) searches for classes in CLASSPATH. If in your application you want to use a lot of third-party libraries, your CLASSPATH needs to include the full path of these libraries. To make your life easier, you might want to put all your third-party libraries in a single place, as below:
$ cd ~
$ mkdir JARS
$ cd JARS
$ cp ~/aws-java-sdk-1.11.304/lib/aws-java-sdk-1.11.304.jar .
$ cp ~/aws-java-sdk-1.11.304/third-party/lib/*.jar .
$ ls
aspectjrt-1.8.2.jar jackson-annotations-2.6.0.jar netty-common-4.1.17.Final.jar
aspectjweaver.jar jackson-core-2.6.7.jar netty-handler-4.1.17.Final.jar
aws-java-sdk-1.11.304.jar jackson-databind-2.6.7.1.jar netty-resolver-4.1.17.Final.jar
aws-swf-build-tools-1.1.jar jackson-dataformat-cbor-2.6.7.jar netty-transport-4.1.17.Final.jar
commons-codec-1.10.jar javax.mail-api-1.4.6.jar spring-beans-3.0.7.RELEASE.jar
commons-logging-1.1.3.jar jmespath-java-1.11.304.jar spring-context-3.0.7.RELEASE.jar
freemarker-2.3.9.jar joda-time-2.8.1.jar spring-core-3.0.7.RELEASE.jar
httpclient-4.5.5.jar netty-buffer-4.1.17.Final.jar spring-test-3.0.7.RELEASE.jar
httpcore-4.4.9.jar netty-codec-4.1.17.Final.jar
ion-java-1.0.2.jar netty-codec-http-4.1.17.Final.jar
As you can see, the AWS SDK for Java depends on a whole lot of third-party libraries. Now we set the CLASSPATH environment variable, pointing to the JARS folder containing all the JAR files. It is recommended that you put this CLASSPATH definition into your .bashrc so that you do not need to do this every time you open a new SSH connection to the server.
$ export CLASSPATH=~/JARS/*:.
In the above-mentioned CLASSPATH definition, we use a wildcard * to include all the JAR files under a directory. This is not a well known feature that was introduced in Java 1.6 but you should know about it. Also, we recommend that you read the following Oracle documentation on CLASSPATH to understand how it works.
(3) Working with EC2
Now, let's write some simple Java code to list all the EC2 instances in your AWS account in a particular AWS region. Copy the following code and save it as TestEC2.java.
import java.util.*;
import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.auth.profile.*;
import com.amazonaws.regions.*;
import com.amazonaws.services.ec2.*;
import com.amazonaws.services.ec2.model.*;
public class TestEC2
{
public AmazonEC2Client client;
public TestEC2()
{
client = new AmazonEC2Client();
client.configureRegion(Regions.AP_SOUTHEAST_2);
}
public void listInstances()
{
try
{
DescribeInstancesResult result = client.describeInstances();
List<Reservation> reservations = result.getReservations();
for (Reservation reservation: reservations)
{
String reservation_id = reservation.getReservationId();
System.out.println("Reservation: " + reservation_id);
List<Instance> instances = reservation.getInstances();
for (Instance instance: instances)
{
String id = instance.getInstanceId();
String state = instance.getState().getName();
System.out.println("\t" + id + "\t" + state);
}
}
} catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public static void main(String[] args)
{
TestEC2 test = new TestEC2();
test.listInstances();
}
}
Save this code as TestEC2.java, then compile and run it with the following commands.
$ javac TestEC2.java
$ java TestEC2
Reservation: r-0592ccdae819ac840
i-049a528c2e396f52f running
Reservation: r-06e5ad787a98d6b67
i-07635e6064d7dd7d2 running
Reservation: r-04199ca8e00b0bd9a
i-08752b8054c138907 running
If you see the following error message, you need to provide the AWS credential needed to run your code. In the simplest case, you can associate an IAM role to your EC2 instance (that runs this code).
$ java TestEC2
Unable to load AWS credentials from any provider in the chain
com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain
at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:131)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1164)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:762)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:724)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
at com.amazonaws.services.ec2.AmazonEC2Client.doInvoke(AmazonEC2Client.java:16126)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:16102)
at com.amazonaws.services.ec2.AmazonEC2Client.executeDescribeInstances(AmazonEC2Client.java:7846)
at com.amazonaws.services.ec2.AmazonEC2Client.describeInstances(AmazonEC2Client.java:7821)
at com.amazonaws.services.ec2.AmazonEC2Client.describeInstances(AmazonEC2Client.java:7858)
at TestEC2.listInstances(TestEC2.java:23)
at TestEC2.main(TestEC2.java:47)
(4) Logging for the AWS SDK for Java
When we develop applications we have a need to enable logging for debug purposes. The AWS SDK for Java is instrumented with Apache Commons Logging, which is an abstraction layer that enables the use of any one of several logging systems at runtime. We do not need to make any code changes to enable logging API calls to AWS. All we need to download log4j from a mirror, and set up the appropriate CLASSPATH:
$ cd ~
$ wget http://apache.mirror.digitalpacific.com.au/logging/log4j/1.2.17/log4j-1.2.17.zip
$ unzip log4j-1.2.17.zip
$ cp ~/apache-log4j-1.2.17/log4j-1.2.17.jar ~/JARS/
Then we will need to have a configuration file called log4j.properties in the same folder as your TestEC2.java and TestEC2.class, with the following content:
log4j.rootLogger=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# Turn on DEBUG logging in com.amazonaws.request to log
# a summary of requests/responses with AWS request IDs
log4j.logger.com.amazonaws.request=DEBUG
Now we run our TestEC2 again, we can see how the API call is being sent to the EC2 service endpoint, and how the EC2 service endpoint returns information such as HTTP status code and AWS Request ID.
$ java TestEC2
2018-03-29 04:15:04,218 [main] DEBUG com.amazonaws.request - Sending Request: POST https://ec2.ap-southeast-2.amazonaws.com / Parameters: ({"Action":["DescribeInstances"],"Version":["2016-11-15"]}Headers: (User-Agent: aws-sdk-java/1.11.304 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12 java/1.8.0_151, amz-sdk-invocation-id: 795e632b-9c0c-495d-29e9-23139784be67, )
2018-03-29 04:15:04,819 [main] DEBUG com.amazonaws.request - Received successful response: 200, AWS Request ID: 2f889c1e-2437-4616-a4e8-ea053a42e540
2018-03-29 04:15:04,820 [main] DEBUG com.amazonaws.request - x-amzn-RequestId: not available
2018-03-29 04:15:04,820 [main] DEBUG com.amazonaws.request - AWS Request ID: 2f889c1e-2437-4616-a4e8-ea053a42e540
Reservation: r-0592ccdae819ac840
i-049a528c2e396f52f running
Reservation: r-06e5ad787a98d6b67
i-07635e6064d7dd7d2 running
Reservation: r-04199ca8e00b0bd9a
i-08752b8054c138907 running
(5) Apache Wire Logs
With the above-mentioned configuration, in your logs you get a summary of the request/response with the AWS request id for your API calls to AWS. Sometimes such information alone is not sufficient to debug an issue. You might want to look at the actual request/response body for your API calls. This can be achieved by enabling Apache wire logs. You only need to add the following line into your log4j.properties:
log4j.logger.org.apache.http.wire=DEBUG
Below is an example of running the same TestEC2 program with Apache wire log enabled. As you can see, the Apache wire logs give you a lot more information including the actual request/response body. If you want to log these information onto disks, this will create a significant disk I/O overhead for your application, resulting in a certain degree of performance degradation. As such, we recommend that you only enable Apache wire log for debugging purposes.
$ java TestEC2
2018-03-29 04:20:19,676 [main] DEBUG com.amazonaws.request - Sending Request: POST https://ec2.ap-southeast-2.amazonaws.com / Parameters: ({"Action":["DescribeInstances"],"Version":["2016-11-15"]}Headers: (User-Agent: aws-sdk-java/1.11.304 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12 java/1.8.0_151, amz-sdk-invocation-id: 7e939d7e-4c35-b053-5e7e-da2fe43e79ec, )
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "POST / HTTP/1.1[\r][\n]"
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Host: ec2.ap-southeast-2.amazonaws.com[\r][\n]"
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=ASIAJGWE7BF5MIDBPQGQ/20180329/ap-southeast-2/ec2/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-retry;host;user-agent;x-amz-date;x-amz-security-token, Signature=e37e90d260fedc634d2d915220964796a66fc4ed2d682ef92ccf3ec39767b51c[\r][\n]"
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "X-Amz-Date: 20180329T042019Z[\r][\n]"
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "User-Agent: aws-sdk-java/1.11.304 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12 java/1.8.0_151[\r][\n]"
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "X-Amz-Security-Token: FQoDYXdzELX//////////wEaDCA2m70FctIPKqEGbyLBA7G2eNi5l03WhjkWPwDymaZWMCM4HdNGiEhKbau6DogK9HCiKSJhGqWR4BuGggV6Q1mMaohmJNAnvm4Azv38JG1hvt/+rVZoDmLkJetJyr4QIRz9KU7gQ4l0obnNWajAgLhK2YfsfLNWsE/wJw+dgcSvmg4PU5kmg2JCBAFM3cQN/xf0vACYhIDckxTxajVed0A89kGIkw9p83GWeve2Gx5ul7kocqa3RS17uw3n3xjkojOtQvrtkuy0VO+cxVKDtSfuntJQ+/wbgBlEx7Ov17kSwiKcpCqLjPYpmvdvveAY/CfVOQ6C3/E2RTeMyugRdqhGiFJdy2KJ5coxvUF9zsmNBhWi4+69cxW18+mwKzGkJjYAnvY8pIuN4yKM+CieBRg8yq6L8uvvaVOH7sB/eI/rAu8VCM9+C3PqF3dtwtDJp2Sv22jLiyhUQ6XVf3WItry8HjlZ9RH3Mv1CL165I8OLdjF0X+lIfePHwt3HbE7MIYF8ODMAhSyXLJ5SWnrboff2saBNMc31KcL4Qy2PTq06h4g4lLDWwF+uwXJ2SdGj8g7/lKsXVKRSav66Py7Xjhl7uo1hKGbDVXCginz7KfM6KMTQ8dUF[\r][\n]"
2018-03-29 04:20:19,962 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "amz-sdk-invocation-id: 7e939d7e-4c35-b053-5e7e-da2fe43e79ec[\r][\n]"
2018-03-29 04:20:19,963 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "amz-sdk-retry: 0/0/500[\r][\n]"
2018-03-29 04:20:19,963 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Type: application/x-www-form-urlencoded; charset=utf-8[\r][\n]"
2018-03-29 04:20:19,963 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Length: 43[\r][\n]"
2018-03-29 04:20:19,963 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2018-03-29 04:20:19,963 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "[\r][\n]"
2018-03-29 04:20:19,966 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Action=DescribeInstances&Version=2016-11-15"
2018-03-29 04:20:20,089 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2018-03-29 04:20:20,090 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Type: text/xml;charset=UTF-8[\r][\n]"
2018-03-29 04:20:20,090 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Transfer-Encoding: chunked[\r][\n]"
2018-03-29 04:20:20,090 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Vary: Accept-Encoding[\r][\n]"
2018-03-29 04:20:20,090 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Thu, 29 Mar 2018 04:20:19 GMT[\r][\n]"
2018-03-29 04:20:20,090 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Server: AmazonEC2[\r][\n]"
2018-03-29 04:20:20,090 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
2018-03-29 04:20:20,118 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "2000[\r][\n]"
2018-03-29 04:20:20,118 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "<?xml version="1.0" encoding="UTF-8"?>[\n]"
2018-03-29 04:20:20,118 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">[\n]"
2018-03-29 04:20:20,118 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <requestId>21493bbc-4357-4088-b7f5-be27431be0b3</requestId>[\n]"
2018-03-29 04:20:20,118 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reservationSet>[\n]"
2018-03-29 04:20:20,119 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,119 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reservationId>r-0592ccdae819ac840</reservationId>[\n]"
2018-03-29 04:20:20,119 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ownerId>137834070286</ownerId>[\n]"
2018-03-29 04:20:20,119 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet/>[\n]"
2018-03-29 04:20:20,119 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instancesSet>[\n]"
2018-03-29 04:20:20,119 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceId>i-049a528c2e396f52f</instanceId>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <imageId>ami-d38a4ab1</imageId>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceState>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <code>16</code>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <name>running</name>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </instanceState>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-8-129.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,120 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <dnsName>ec2-52-62-49-231.ap-southeast-2.compute.amazonaws.com</dnsName>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reason/>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <keyName>Ubuntu 16.04</keyName>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <amiLaunchIndex>0</amiLaunchIndex>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <productCodes/>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceType>t2.micro</instanceType>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <launchTime>2018-03-29T03:39:52.000Z</launchTime>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <placement>[\n]"
2018-03-29 04:20:20,121 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <availabilityZone>ap-southeast-2b</availabilityZone>[\n]"
2018-03-29 04:20:20,126 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName/>[\n]"
2018-03-29 04:20:20,126 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <tenancy>default</tenancy>[\n]"
2018-03-29 04:20:20,126 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </placement>[\n]"
2018-03-29 04:20:20,126 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <monitoring>[\n]"
2018-03-29 04:20:20,127 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <state>disabled</state>[\n]"
2018-03-29 04:20:20,127 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </monitoring>[\n]"
2018-03-29 04:20:20,127 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <subnetId>subnet-a0856dc5</subnetId>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <vpcId>vpc-552cc830</vpcId>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.8.129</privateIpAddress>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipAddress>52.62.49.231</ipAddress>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <sourceDestCheck>true</sourceDestCheck>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupId>sg-efcc248a</groupId>[\n]"
2018-03-29 04:20:20,128 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName>default</groupName>[\n]"
2018-03-29 04:20:20,129 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,129 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </groupSet>[\n]"
2018-03-29 04:20:20,129 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <architecture>x86_64</architecture>[\n]"
2018-03-29 04:20:20,129 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <rootDeviceType>ebs</rootDeviceType>[\n]"
2018-03-29 04:20:20,130 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <rootDeviceName>/dev/sda1</rootDeviceName>[\n]"
2018-03-29 04:20:20,130 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <blockDeviceMapping>[\n]"
2018-03-29 04:20:20,130 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,130 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deviceName>/dev/sda1</deviceName>[\n]"
2018-03-29 04:20:20,130 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ebs>[\n]"
2018-03-29 04:20:20,130 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <volumeId>vol-09b8753f8e008dbd3</volumeId>[\n]"
2018-03-29 04:20:20,131 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>attached</status>[\n]"
2018-03-29 04:20:20,131 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachTime>2018-03-29T03:39:53.000Z</attachTime>[\n]"
2018-03-29 04:20:20,131 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deleteOnTermination>true</deleteOnTermination>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </ebs>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </blockDeviceMapping>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <virtualizationType>hvm</virtualizationType>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <clientToken/>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <hypervisor>xen</hypervisor>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <networkInterfaceSet>[\n]"
2018-03-29 04:20:20,132 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,133 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <networkInterfaceId>eni-21a3eb0b</networkInterfaceId>[\n]"
2018-03-29 04:20:20,133 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <subnetId>subnet-a0856dc5</subnetId>[\n]"
2018-03-29 04:20:20,133 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <vpcId>vpc-552cc830</vpcId>[\n]"
2018-03-29 04:20:20,133 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <description/>[\n]"
2018-03-29 04:20:20,133 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ownerId>137834070286</ownerId>[\n]"
2018-03-29 04:20:20,136 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>in-use</status>[\n]"
2018-03-29 04:20:20,136 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <macAddress>02:ba:fb:c3:b7:54</macAddress>[\n]"
2018-03-29 04:20:20,136 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.8.129</privateIpAddress>[\n]"
2018-03-29 04:20:20,136 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-8-129.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,136 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <sourceDestCheck>true</sourceDestCheck>[\n]"
2018-03-29 04:20:20,136 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupId>sg-efcc248a</groupId>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName>default</groupName>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </groupSet>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachment>[\n]"
2018-03-29 04:20:20,137 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachmentId>eni-attach-a3c7e64e</attachmentId>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deviceIndex>0</deviceIndex>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>attached</status>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachTime>2018-03-29T03:39:52.000Z</attachTime>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deleteOnTermination>true</deleteOnTermination>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </attachment>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <association>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicIp>52.62.49.231</publicIp>[\n]"
2018-03-29 04:20:20,138 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicDnsName>ec2-52-62-49-231.ap-southeast-2.compute.amazonaws.com</publicDnsName>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipOwnerId>amazon</ipOwnerId>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </association>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddressesSet>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.8.129</privateIpAddress>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-8-129.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,139 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <primary>true</primary>[\n]"
2018-03-29 04:20:20,141 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <association>[\n]"
2018-03-29 04:20:20,141 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicIp>52.62.49.231</publicIp>[\n]"
2018-03-29 04:20:20,142 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicDnsName>ec2-52-62-49-231.ap-southeast-2.compute.amazonaws.com</publicDnsName>[\n]"
2018-03-29 04:20:20,142 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipOwnerId>amazon</ipOwnerId>[\n]"
2018-03-29 04:20:20,142 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </association>[\n]"
2018-03-29 04:20:20,142 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,142 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </privateIpAddressesSet>[\n]"
2018-03-29 04:20:20,142 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipv6AddressesSet/>[\n]"
2018-03-29 04:20:20,143 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,143 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </networkInterfaceSet>[\n]"
2018-03-29 04:20:20,143 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <iamInstanceProfile>[\n]"
2018-03-29 04:20:20,143 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <arn>arn:aws:iam::137834070286:instance-profile/Admin-Role</arn>[\n]"
2018-03-29 04:20:20,144 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <id>AIPAJ4TI7N7YCY2QHLSEW</id>[\n]"
2018-03-29 04:20:20,144 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </iamInstanceProfile>[\n]"
2018-03-29 04:20:20,144 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ebsOptimized>false</ebsOptimized>[\n]"
2018-03-29 04:20:20,145 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <enaSupport>true</enaSupport>[\n]"
2018-03-29 04:20:20,145 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,145 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </instancesSet>[\n]"
2018-03-29 04:20:20,145 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,145 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,145 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reservationId>r-06e5ad787a98d6b67</reservationId>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ownerId>137834070286</ownerId>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet/>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instancesSet>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceId>i-07635e6064d7dd7d2</instanceId>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <imageId>ami-41c12e23</imageId>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceState>[\n]"
2018-03-29 04:20:20,146 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <code>16</code>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <name>running</name>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </instanceState>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-0-20.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <dnsName>ec2-52-64-207-144.ap-southeast-2.compute.amazonaws.com</dnsName>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reason/>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <keyName>Ubuntu 16.04</keyName>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <amiLaunchIndex>0</amiLaunchIndex>[\n]"
2018-03-29 04:20:20,147 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <productCodes/>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceType>t2.xlarge</instanceType>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <launchTime>2018-02-02T00:28:18.000Z</launchTime>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <placement>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <availabilityZone>ap-southeast-2b</availabilityZone>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName/>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <tenancy>default</tenancy>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </placement>[\n]"
2018-03-29 04:20:20,148 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <monitoring>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <state>enabled</state>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </monitoring>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <subnetId>subnet-a0856dc5</subnetId>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <vpcId>vpc-552cc830</vpcId>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.0.20</privateIpAddress>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipAddress>52.64.207.144</ipAddress>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <sourceDestCheck>true</sourceDestCheck>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,149 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupId>sg-efcc248a</groupId>[\n]"
2018-03-29 04:20:20,150 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName>default</groupName>[\n]"
2018-03-29 04:20:20,150 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,150 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </groupSet>[\n]"
2018-03-29 04:20:20,150 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <architecture>x86_64</architecture>[\n]"
2018-03-29 04:20:20,150 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <rootDeviceType>ebs</rootDeviceType>[\n]"
2018-03-29 04:20:20,151 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <rootDeviceName>/dev/sda1</rootDeviceName>[\n]"
2018-03-29 04:20:20,151 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <blockDeviceMapping>[\n]"
2018-03-29 04:20:20,151 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <i"
2018-03-29 04:20:20,220 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "tem>[\n]"
2018-03-29 04:20:20,221 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " [\r][\n]"
2018-03-29 04:20:20,221 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "2000[\r][\n]"
2018-03-29 04:20:20,221 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deviceName>/dev/sda1</deviceName>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ebs>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <volumeId>vol-0b64a898618d7a1ca</volumeId>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>attached</status>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachTime>2017-11-09T20:19:20.000Z</attachTime>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deleteOnTermination>true</deleteOnTermination>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </ebs>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </blockDeviceMapping>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <virtualizationType>hvm</virtualizationType>[\n]"
2018-03-29 04:20:20,222 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <clientToken>rERnA1510258758735</clientToken>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <tagSet>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <key>Name</key>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <value>Ubuntu 16.04</value>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <key>auto-delete</key>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <value>no</value>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,223 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </tagSet>[\n]"
2018-03-29 04:20:20,224 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <hypervisor>xen</hypervisor>[\n]"
2018-03-29 04:20:20,224 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <networkInterfaceSet>[\n]"
2018-03-29 04:20:20,224 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,224 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <networkInterfaceId>eni-d936e2f2</networkInterfaceId>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <subnetId>subnet-a0856dc5</subnetId>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <vpcId>vpc-552cc830</vpcId>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <description/>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ownerId>137834070286</ownerId>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>in-use</status>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <macAddress>02:37:23:63:c5:d4</macAddress>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.0.20</privateIpAddress>[\n]"
2018-03-29 04:20:20,225 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-0-20.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,226 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <sourceDestCheck>true</sourceDestCheck>[\n]"
2018-03-29 04:20:20,226 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet>[\n]"
2018-03-29 04:20:20,226 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,226 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupId>sg-efcc248a</groupId>[\n]"
2018-03-29 04:20:20,226 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName>default</groupName>[\n]"
2018-03-29 04:20:20,226 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </groupSet>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachment>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachmentId>eni-attach-fe92479f</attachmentId>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deviceIndex>0</deviceIndex>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>attached</status>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachTime>2017-11-09T20:19:19.000Z</attachTime>[\n]"
2018-03-29 04:20:20,227 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deleteOnTermination>true</deleteOnTermination>[\n]"
2018-03-29 04:20:20,228 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </attachment>[\n]"
2018-03-29 04:20:20,228 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <association>[\n]"
2018-03-29 04:20:20,228 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicIp>52.64.207.144</publicIp>[\n]"
2018-03-29 04:20:20,228 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicDnsName>ec2-52-64-207-144.ap-southeast-2.compute.amazonaws.com</publicDnsName>[\n]"
2018-03-29 04:20:20,228 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipOwnerId>137834070286</ipOwnerId>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </association>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddressesSet>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.0.20</privateIpAddress>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-0-20.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <primary>true</primary>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <association>[\n]"
2018-03-29 04:20:20,229 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicIp>52.64.207.144</publicIp>[\n]"
2018-03-29 04:20:20,230 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicDnsName>ec2-52-64-207-144.ap-southeast-2.compute.amazonaws.com</publicDnsName>[\n]"
2018-03-29 04:20:20,230 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipOwnerId>137834070286</ipOwnerId>[\n]"
2018-03-29 04:20:20,230 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </association>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </privateIpAddressesSet>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipv6AddressesSet/>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </networkInterfaceSet>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <iamInstanceProfile>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <arn>arn:aws:iam::137834070286:instance-profile/Admin-Role</arn>[\n]"
2018-03-29 04:20:20,231 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <id>AIPAJ4TI7N7YCY2QHLSEW</id>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </iamInstanceProfile>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ebsOptimized>false</ebsOptimized>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <enaSupport>true</enaSupport>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </instancesSet>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,232 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,233 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reservationId>r-04199ca8e00b0bd9a</reservationId>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ownerId>137834070286</ownerId>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet/>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instancesSet>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceId>i-08752b8054c138907</instanceId>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <imageId>ami-42638120</imageId>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceState>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <code>16</code>[\n]"
2018-03-29 04:20:20,234 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <name>running</name>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </instanceState>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-15-224.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <dnsName>ec2-52-64-12-171.ap-southeast-2.compute.amazonaws.com</dnsName>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <reason/>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <keyName>Ubuntu 16.04</keyName>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <amiLaunchIndex>0</amiLaunchIndex>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <productCodes/>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <instanceType>t2.xlarge</instanceType>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <launchTime>2018-03-04T23:14:10.000Z</launchTime>[\n]"
2018-03-29 04:20:20,235 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <placement>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <availabilityZone>ap-southeast-2b</availabilityZone>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName/>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <tenancy>default</tenancy>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </placement>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <platform>windows</platform>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <monitoring>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <state>disabled</state>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </monitoring>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <subnetId>subnet-a0856dc5</subnetId>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <vpcId>vpc-552cc830</vpcId>[\n]"
2018-03-29 04:20:20,236 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.15.224</privateIpAddress>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipAddress>52.64.12.171</ipAddress>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <sourceDestCheck>true</sourceDestCheck>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupSet>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupId>sg-efcc248a</groupId>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName>default</groupName>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </groupSet>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <architecture>x86_64</architecture>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <rootDeviceType>ebs</rootDeviceType>[\n]"
2018-03-29 04:20:20,237 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <rootDeviceName>/dev/sda1</rootDeviceName>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <blockDeviceMapping>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deviceName>/dev/sda1</deviceName>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ebs>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <volumeId>vol-074bd13c3175a5e07</volumeId>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>attached</status>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachTime>2017-11-29T03:01:19.000Z</attachTime>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deleteOnTermination>true</deleteOnTermination>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </ebs>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,238 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </blockDeviceMapping>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <virtualizationType>hvm</virtualizationType>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <clientToken/>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <tagSet>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <key>Name</key>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <value>Windows 2016</value>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <key>auto-delete</key>[\n]"
2018-03-29 04:20:20,239 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <value>no</value>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </tagSet>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <hypervisor>xen</hypervisor>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <networkInterfaceSet>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <networkInterfaceId>eni-0a79f921</networkInterfaceId>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <subnetId>subnet-a0856dc5</subnetId>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <vpcId>vpc-552cc830</vpcId>[\n]"
2018-03-29 04:20:20,240 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <description/>[\n]"
2018-03-29 04:20:20,241 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ownerId>137834070286</ownerId>[\n]"
2018-03-29 04:20:20,241 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>in-use</status>[\n]"
2018-03-29 04:20:20,241 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <macAddress>02:82:17:32:0d:c2</macAddress>[\n]"
2018-03-29 04:20:20,241 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.15.224</privateIpAddress>[\n]"
2018-03-29 04:20:20,241 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-15-224.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,241 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <sourceDestCheck>t"
2018-03-29 04:20:20,257 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "rue</sourceDestCheck>[\n]"
2018-03-29 04:20:20,257 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <[\r][\n]"
2018-03-29 04:20:20,257 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "89b[\r][\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "groupSet>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupId>sg-efcc248a</groupId>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <groupName>default</groupName>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </groupSet>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachment>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachmentId>eni-attach-bbe655da</attachmentId>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deviceIndex>0</deviceIndex>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <status>attached</status>[\n]"
2018-03-29 04:20:20,258 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <attachTime>2017-11-29T03:01:19.000Z</attachTime>[\n]"
2018-03-29 04:20:20,259 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <deleteOnTermination>true</deleteOnTermination>[\n]"
2018-03-29 04:20:20,259 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </attachment>[\n]"
2018-03-29 04:20:20,259 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <association>[\n]"
2018-03-29 04:20:20,259 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicIp>52.64.12.171</publicIp>[\n]"
2018-03-29 04:20:20,259 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " "
2018-03-29 04:20:20,263 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicDnsName>ec2-52-64-12-171.ap-southeast-2.compute.amazonaws.com</publicDnsName>[\n]"
2018-03-29 04:20:20,263 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipOwnerId>137834070286</ipOwnerId>[\n]"
2018-03-29 04:20:20,263 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </association>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddressesSet>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <item>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateIpAddress>172.31.15.224</privateIpAddress>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <privateDnsName>ip-172-31-15-224.ap-southeast-2.compute.internal</privateDnsName>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <primary>true</primary>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <association>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicIp>52.64.12.171</publicIp>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <publicDnsName>ec2-52-64-12-171.ap-southeast-2.compute.amazonaws.com</publicDnsName>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipOwnerId>137834070286</ipOwnerId>[\n]"
2018-03-29 04:20:20,264 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </association>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </privateIpAddressesSet>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ipv6AddressesSet/>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </networkInterfaceSet>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <ebsOptimized>false</ebsOptimized>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " <enaSupport>true</enaSupport>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </instancesSet>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </item>[\n]"
2018-03-29 04:20:20,265 [main] DEBUG org.apache.http.wire - http-outgoing-0 << " </reservationSet>[\n]"
2018-03-29 04:20:20,266 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "</DescribeInstancesResponse>"
2018-03-29 04:20:20,266 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
2018-03-29 04:20:20,267 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "0[\r][\n]"
2018-03-29 04:20:20,267 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
2018-03-29 04:20:20,268 [main] DEBUG com.amazonaws.request - Received successful response: 200, AWS Request ID: 21493bbc-4357-4088-b7f5-be27431be0b3
2018-03-29 04:20:20,271 [main] DEBUG com.amazonaws.request - x-amzn-RequestId: not available
2018-03-29 04:20:20,278 [main] DEBUG com.amazonaws.request - AWS Request ID: 21493bbc-4357-4088-b7f5-be27431be0b3
Reservation: r-0592ccdae819ac840
i-049a528c2e396f52f running
Reservation: r-06e5ad787a98d6b67
i-07635e6064d7dd7d2 running
Reservation: r-04199ca8e00b0bd9a
i-08752b8054c138907 running
For more information on logging for the AWS SDK for Java, we recommend that you read through the following AWS documentation:
(6) Working with DynamoDB
Now we write some simple code to insert a single item into your DynamoDB table. Here we assume that you have a DynamoDB table in your AWS account. The table has a partition key (hash, S) and a range key (sort, N).
import java.io.*;
import java.util.*;
import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.auth.profile.*;
import com.amazonaws.regions.*;
import com.amazonaws.services.dynamodbv2.*;
import com.amazonaws.services.dynamodbv2.model.*;
import com.amazonaws.services.dynamodbv2.document.*;
import com.amazonaws.services.dynamodbv2.datamodeling.*;
public class TestDDB
{
public AmazonDynamoDBClient client;
public String tableName;
public int threadId;
public TestDDB()
{
client = new AmazonDynamoDBClient();
client.configureRegion(Regions.AP_SOUTHEAST_2);
try
{
Properties prop = new Properties();
InputStream input = new FileInputStream("ddb.properties");
prop.load(input);
tableName = prop.getProperty("tableName");
}catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public void put(String hash, int sort, String value)
{
HashMap<String, AttributeValue> item = new HashMap<String, AttributeValue>();
item.put("hash", new AttributeValue(hash));
item.put("sort", new AttributeValue().withN(Integer.toString(sort)));
item.put("val", new AttributeValue(value));
PutItemRequest putItemRequest = new PutItemRequest().withTableName(tableName).withItem(item);
try
{
client.putItem(putItemRequest);
} catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public static void main(String[] args)
{
try
{
TestDDB test = new TestDDB();
test.put("HashKey", 12345, "Test Value");
} catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
In this code, we use a configuration file ddb.properties so that you can change your table name without changing the code. Below is the content of your ddb.properties file, where "test" is the actual name of your DynamoDB table.
tableName=test
Run this code with Apache wire log enabled, you will see the following:
$ javac TestDDB.java
$ java TestDDB
2018-03-29 04:42:51,260 [main] DEBUG com.amazonaws.request - Sending Request: POST https://dynamodb.ap-southeast-2.amazonaws.com / Headers: (User-Agent: aws-sdk-java/1.11.304 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12 java/1.8.0_151, amz-sdk-invocation-id: 1ea66fd7-9fb8-88e2-baff-90dfa96e8c1e, Content-Length: 99, X-Amz-Target: DynamoDB_20120810.PutItem, Content-Type: application/x-amz-json-1.0, )
2018-03-29 04:42:51,546 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "POST / HTTP/1.1[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Host: dynamodb.ap-southeast-2.amazonaws.com[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=ASIAJYVGGZQUDTX4WV4A/20180329/ap-southeast-2/dynamodb/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-retry;content-length;content-type;host;user-agent;x-amz-date;x-amz-security-token;x-amz-target, Signature=9169b4b1390f1be7311ae21865705acc19c627c603dbf69f5a2e600139189ec2[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "X-Amz-Date: 20180329T044251Z[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "User-Agent: aws-sdk-java/1.11.304 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12 java/1.8.0_151[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "X-Amz-Security-Token: FQoDYXdzELX//////////wEaDJnn7gNcQp3CFOpaRCLBA4Zum5iys+m5Rb74i/zd2dYhxHvkKo7IK1eOcgJ+WZIKwhARb46h4cVWKKUyFOl5Kc2+tUeoZmOMOtBHemuYup8ywYY5BzDe8e4qxFyjXjyf4J8A8kr8wpjx4ONzn11mJmyNwJTAQBEawSdRntJb3aHmeZREM2BBP1tXJIX1xNcBHxSBCq6yB/+LgpPthOAKA6LFCyxjPgczFFq9DVi1nz7pmhfN8kpX0VUioJ0JNwgyops0m/0bkf4DKfytFK8YXdBinRk2d6QOP4SRaoeH4I53WeE1MzTjGcA0797iM42W8tu9mRC3mvXtsPg7j8pKBOTN9BEgqSr5PsFklUAqIhPh2vYpfqXKujRI/YP2QqR0py3oD44H3OyZFvl4S0sBsHBoUjCKQg4I66jDc5gan0h1xzfaJPEJr4+Wfz1pcQVIdNFbbe0d1C8EMoEyfH+QRY/tZ0JGNAN5iqthey42C+wtO2Va0jemq86y6orQPvOgQCE2vS9Z4746FDTJvwBvtb/hu0JFOmnwn6DMa2M7Lk3fEIbe39blgPy1++AT03SrPl0NsOOXSOvqJU6JnISzIb6swcU9eZxhQSQ4wQbSRcyPKN3T8dUF[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "amz-sdk-invocation-id: 1ea66fd7-9fb8-88e2-baff-90dfa96e8c1e[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "amz-sdk-retry: 0/0/500[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "X-Amz-Target: DynamoDB_20120810.PutItem[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Type: application/x-amz-json-1.0[\r][\n]"
2018-03-29 04:42:51,547 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Length: 99[\r][\n]"
2018-03-29 04:42:51,548 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2018-03-29 04:42:51,548 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "[\r][\n]"
2018-03-29 04:42:51,548 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "{"TableName":"test3","Item":{"val":{"S":"Test Value"},"sort":{"N":"12345"},"hash":{"S":"HashKey"}}}"
2018-03-29 04:42:51,582 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Server: Server[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Thu, 29 Mar 2018 04:42:51 GMT[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Type: application/x-amz-json-1.0[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Length: 2[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Connection: keep-alive[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "x-amzn-RequestId: H99OF741F17097TQPKT9DP4U3JVV4KQNSO5AEMVJF66Q9ASUAAJG[\r][\n]"
2018-03-29 04:42:51,583 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "x-amz-crc32: 2745614147[\r][\n]"
2018-03-29 04:42:51,584 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
2018-03-29 04:42:51,584 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "{}"
2018-03-29 04:42:51,600 [main] DEBUG com.amazonaws.request - Received successful response: 200, AWS Request ID: H99OF741F17097TQPKT9DP4U3JVV4KQNSO5AEMVJF66Q9ASUAAJG
2018-03-29 04:42:51,604 [main] DEBUG com.amazonaws.request - x-amzn-RequestId: H99OF741F17097TQPKT9DP4U3JVV4KQNSO5AEMVJF66Q9ASUAAJG
If you disable Apache wire log, you will only see this:
$ java TestDDB
2018-03-29 04:47:01,642 [main] DEBUG com.amazonaws.request - Sending Request: POST https://dynamodb.ap-southeast-2.amazonaws.com / Headers: (User-Agent: aws-sdk-java/1.11.304 Linux/4.4.0-1052-aws OpenJDK_64-Bit_Server_VM/25.151-b12 java/1.8.0_151, amz-sdk-invocation-id: 239d7258-cf0b-90eb-f7e3-b6c841eca792, Content-Length: 99, X-Amz-Target: DynamoDB_20120810.PutItem, Content-Type: application/x-amz-json-1.0, )
2018-03-29 04:47:01,974 [main] DEBUG com.amazonaws.request - Received successful response: 200, AWS Request ID: L72E7M3FE7E80O12RQBCC7NVDFVV4KQNSO5AEMVJF66Q9ASUAAJG
2018-03-29 04:47:01,974 [main] DEBUG com.amazonaws.request - x-amzn-RequestId: L72E7M3FE7E80O12RQBCC7NVDFVV4KQNSO5AEMVJF66Q9ASUAAJG
The following example performs a lot of writes to your DynamoDB table with multiple threads running in parallel. The program accepts the number of threads from your command line parameter.
import java.io.*;
import java.util.*;
import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.auth.profile.*;
import com.amazonaws.regions.*;
import com.amazonaws.services.dynamodbv2.*;
import com.amazonaws.services.dynamodbv2.model.*;
import com.amazonaws.services.dynamodbv2.document.*;
import com.amazonaws.services.dynamodbv2.datamodeling.*;
public class TestDDB extends Thread
{
public AmazonDynamoDBClient client;
public String tableName;
public int threadId;
public TestDDB()
{
client = new AmazonDynamoDBClient();
client.configureRegion(Regions.AP_SOUTHEAST_2);
try
{
Properties prop = new Properties();
InputStream input = new FileInputStream("ddb.properties");
prop.load(input);
tableName = prop.getProperty("tableName");
}catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public void setThreadId(int id)
{
threadId = id;
}
public void put(String hash, int sort, String value)
{
HashMap<String, AttributeValue> item = new HashMap<String, AttributeValue>();
item.put("hash", new AttributeValue(hash));
item.put("sort", new AttributeValue().withN(Integer.toString(sort)));
item.put("val", new AttributeValue(value));
PutItemRequest putItemRequest = new PutItemRequest().withTableName(tableName).withItem(item);
try
{
client.putItem(putItemRequest);
} catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public void run()
{
int start = 10000000;
while (true)
{
try
{
String hash = UUID.randomUUID().toString();
int sort = start;
String value = threadId + "-" + hash + "-" + sort;
put(hash, sort, value);
start++;
} catch (ConditionalCheckFailedException e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
try
{
int threads = Integer.parseInt(args[0]);
TestDDB tests[] = new TestDDB [threads];
for (int i=0; i<threads; i++)
{
tests[i] = new TestDDB();
tests[i].setThreadId(i);
tests[i].start();
}
for (int j=0; j<threads; j++)
{
tests[j].join();
}
} catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Now run the test program with 4 threads. You might want to disable logging for the AWS SDK for Java to get rid of the very large amount of logging information.
$ javac TestDDB.java
$ java TestDDB 4
(7) Further Readings
If you would like to learn Java, please refer to our 111. Learning Java to get started. Also, you should start learning how to read Java docs for the AWS SDK for Java:
Once you know a little bit about Java, you might want to look at the following tutorial: