in src/main/java/com/amazonaws/gdcreplication/lambda/GDCReplicationPlanner.java [39:86]
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
String region = Optional.ofNullable(System.getenv("region")).orElse(Regions.US_EAST_1.getName());
String sourceGlueCatalogId = Optional.ofNullable(System.getenv("source_glue_catalog_id")).orElse("1234567890");
String dbPrefixString = Optional.ofNullable(System.getenv("database_prefix_list")).orElse("");
String separator = Optional.ofNullable(System.getenv("separator")).orElse("|");
String topicArn = Optional.ofNullable(System.getenv("sns_topic_arn_gdc_replication_planner"))
.orElse("arn:aws:sns:us-east-1:1234567890:GlueExportSNSTopic");
String ddbTblNameForDBStatusTracking = Optional.ofNullable(System.getenv("ddb_name_gdc_replication_planner"))
.orElse("ddb_name_gdc_replication_planner");
// Print environment variables
printEnvVariables(sourceGlueCatalogId, topicArn, ddbTblNameForDBStatusTracking, dbPrefixString, separator);
// Create Objects for Glue and SQS
AWSGlue glue = AWSGlueClientBuilder.standard().withRegion(region).build();
AmazonSNS sns = AmazonSNSClientBuilder.standard().withRegion(region).build();
// Create Objects for Utility classes
DDBUtil ddbUtil = new DDBUtil();
SNSUtil snsUtil = new SNSUtil();
GlueUtil glueUtil = new GlueUtil();
// Get databases from Glue
int numberOfDatabasesExported = 0;
List<Database> dBList = glueUtil.getDatabases(glue, sourceGlueCatalogId);
// When database Prefix string is empty or not provided then, it imports all databases
// else, it imports only the databases that has the same prefix
if (dbPrefixString.equalsIgnoreCase("")) {
numberOfDatabasesExported = snsUtil.publishDatabaseSchemasToSNS(sns, dBList, topicArn, ddbUtil,
ddbTblNameForDBStatusTracking, sourceGlueCatalogId);
} else {
// Tokenize the database prefix string to a List of database prefixes
List<String> dbPrefixList = tokenizeDatabasePrefixString(dbPrefixString, separator);
// Identify required databases to export
List<Database> dBsListToExport = getRequiredDatabases(dBList, dbPrefixList);
// Publish schemas for databases to SNS Topic
numberOfDatabasesExported = snsUtil.publishDatabaseSchemasToSNS(sns, dBsListToExport, topicArn, ddbUtil,
ddbTblNameForDBStatusTracking, sourceGlueCatalogId);
}
System.out.printf(
"Database export statistics: number of databases exist = %d, number of databases exported to SNS = %d. \n",
dBList.size(), numberOfDatabasesExported);
return "Lambda function to get a list of Databases completed successfully!";
}