S3ToDDBTransfer.java
unknown
java
3 years ago
3.4 kB
9
Indexable
package com.example.awsdemo; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.dynamodbv2.document.DynamoDB; import com.amazonaws.services.dynamodbv2.document.Item; import com.amazonaws.services.dynamodbv2.document.Table; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.GetObjectRequest; import com.amazonaws.services.s3.model.S3ObjectInputStream; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import org.apache.commons.io.FileUtils; import java.io.File; import java.util.List; import static java.nio.charset.StandardCharsets.UTF_8; public class S3ToDDBTransfer { private static final String ACCESS_KEY = ""; //TODO private static final String SECRET_ACCESS_KEY = ""; //TODO private static final String BUCKET_NAME = ""; //TODO private static final String OBJECT_NAME = "imdb_moviesbatman_series_1992_2022.json"; //TODO private static final String TABLE_NAME = ""; //TODO public static void execute() { //Create AWS credentials AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_ACCESS_KEY); //Create DDB client AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.EU_WEST_1) .build(); //Create S3 client AmazonS3 amazonS3 = AmazonS3Client.builder() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.EU_WEST_1) .build(); GetObjectRequest getObjectRequest = new GetObjectRequest(BUCKET_NAME, OBJECT_NAME); //Parse S3Object to List of IMDBEntity POJOs List<IMDBEntity> imdbEntityList = null; Gson gson = new GsonBuilder().create(); try (S3ObjectInputStream s3is = amazonS3.getObject(getObjectRequest).getObjectContent()){ File temporaryFile = new File("temporary_file.json"); FileUtils.copyInputStreamToFile(s3is, temporaryFile); String jsonAsString = FileUtils.readFileToString(temporaryFile, UTF_8); imdbEntityList = gson.fromJson(jsonAsString, new TypeToken<List<IMDBEntity>>(){}.getType()); } catch (Exception e) { System.err.println(e.getMessage()); System.exit(1); } DynamoDB dynamoDB = new DynamoDB(amazonDynamoDB); Table table = dynamoDB.getTable(TABLE_NAME); //Put items in DDB table imdbEntityList.forEach((IMDBEntity -> { Item item = new Item() .withPrimaryKey("imdbId", IMDBEntity.getImdbId()) .withString("title", IMDBEntity.getTitle()) .withString("poster", IMDBEntity.getPoster()) .withString("type", IMDBEntity.getType()) .withString("year", IMDBEntity.getYear()); table.putItem(item); })); } }
Editor is loading...