public String handleRequest()

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!";
	}