public ScheduledQueryExample(IAmazonTimestreamWrite amazonTimestreamWrite,
                              IAmazonTimestreamQuery amazonTimestreamQuery,
                              TimestreamDependencyHelper timestreamDependencyHelper,
                              TimestreamCrudHelper timestreamCrudHelper, QueryExample queryRunner, String region, IAmazonS3 s3ClientEndPoint)
 {
     _amazonTimestreamWrite      = amazonTimestreamWrite;
     _amazonTimestreamQuery      = amazonTimestreamQuery;
     _timestreamDependencyHelper = timestreamDependencyHelper;
     _timestreamCrudHelper       = timestreamCrudHelper;
     _queryRunner   = queryRunner;
     regionEndpoint = RegionEndpoint.GetBySystemName(region);
     s3Client       = s3ClientEndPoint;
     iamClient      = new AmazonIdentityManagementServiceClient(regionEndpoint);
     snsClient      = new AmazonSimpleNotificationServiceClient(regionEndpoint);
     sqsClient      = new AmazonSQSClient(regionEndpoint);
 }
        static async Task MainAsync(string kmsKeyId, string csvFilePath, string region, bool skipDeletion)
        {
            // Recommended Timestream write client SDK configuration:
            // - Set SDK retry count to 10
            // - Set RequestTimeout to 100 seconds
            var writeClientConfig = new AmazonTimestreamWriteConfig
            {
                RegionEndpoint = RegionEndpoint.GetBySystemName(region),
                Timeout        = TimeSpan.FromSeconds(100),
                MaxErrorRetry  = 10
            };

            var writeClient = new AmazonTimestreamWriteClient(writeClientConfig);
            var crudHelper  = new TimestreamCrudHelper();
            var timestreamDependencyHelper    = new TimestreamDependencyHelper();
            var crudAndSimpleIngestionExample = new CrudAndSimpleIngestionExample(writeClient, crudHelper);
            var csvIngestionExample           = new CsvIngestionExample(writeClient);
            var multiValueIngestionExample    = new MultiValueAttributesExample(writeClient);
            var s3Client = new AmazonS3Client(RegionEndpoint.GetBySystemName(region));

            var queryClientConfig = new AmazonTimestreamQueryConfig
            {
                RegionEndpoint = RegionEndpoint.GetBySystemName(region)
            };
            var queryClient  = new AmazonTimestreamQueryClient(queryClientConfig);
            var queryExample = new QueryExample(queryClient);

            await crudAndSimpleIngestionExample.CreateDatabase();

            await crudAndSimpleIngestionExample.DescribeDatabase();

            await crudAndSimpleIngestionExample.ListDatabases();

            if (kmsKeyId != null)
            {
                await crudAndSimpleIngestionExample.UpdateDatabase("TestFakeKey");
            }

            Dictionary <string, string> resourcesCreated = new Dictionary <string, string>();
            var s3ErrorReportBucketName = AwsResourceConstant.ErrorConfigurationS3BucketNamePrefix +
                                          Guid.NewGuid().ToString("n").Substring(0, 8);
            await timestreamDependencyHelper.CreateS3Bucket(s3Client, s3ErrorReportBucketName);

            resourcesCreated.Add(AwsResourceConstant.BucketName, s3ErrorReportBucketName);

            await crudAndSimpleIngestionExample.CreateTable(s3ErrorReportBucketName);

            await crudAndSimpleIngestionExample.DescribeTable();

            await crudAndSimpleIngestionExample.ListTables();

            await crudAndSimpleIngestionExample.UpdateTable();

            // Simple records ingestion
            await crudAndSimpleIngestionExample.WriteRecordsMultiMeasure();

            await crudAndSimpleIngestionExample.WriteRecordsWithCommonAttributes();

            // upsert records
            await crudAndSimpleIngestionExample.WriteRecordsWithUpsert();

            // write multi value records
            await crudHelper.CreateDatabase(writeClient, MultiMeasureValueConstants.MultiMeasureValueSampleDb);

            await crudHelper.CreateTable(writeClient, MultiMeasureValueConstants.MultiMeasureValueSampleDb,
                                         MultiMeasureValueConstants.MultiMeasureValueSampleTable, s3ErrorReportBucketName);

            await multiValueIngestionExample.WriteRecordsMultiMeasureValueSingleRecord();

            await multiValueIngestionExample.WriteRecordsMultiMeasureValueMultipleRecords();

            if (csvFilePath != null)
            {
                // Bulk record ingestion for bootstrapping a table with fresh data
                await csvIngestionExample.BulkWriteRecordsMultiMeasure(csvFilePath);

                await queryExample.RunAllQueries();

                // Try cancelling query
                await queryExample.CancelQuery();

                // Run query with multiple pages
                await queryExample.RunQueryWithMultiplePages(20000);

                // Run Scheduled Query examples only if CSV was provided
                var scheduledQueryExample = new ScheduledQueryExample(writeClient, queryClient,
                                                                      timestreamDependencyHelper,
                                                                      crudHelper, queryExample, region, s3Client);
                await scheduledQueryExample.RunScheduledQueryExample(skipDeletion, resourcesCreated);
            }
            else
            {
                Console.WriteLine("Running the SELECT ALL query");
                await queryExample.RunQueryAsync(QueryExample.SELECT_ALL_QUERY + " LIMIT 10");
            }

            if (!skipDeletion)
            {
                await crudAndSimpleIngestionExample.DeleteTable();

                await crudAndSimpleIngestionExample.DeleteDatabase();
            }
        }
Example #3
0
        static async Task MainAsync(string kmsKeyId, string csvFilePath)
        {
            // Recommended Timestream write client SDK configuration:
            // - Set SDK retry count to 10
            // - Set RequestTimeout to 20 seconds
            var writeClientConfig = new AmazonTimestreamWriteConfig
            {
                Timeout       = TimeSpan.FromSeconds(20),
                MaxErrorRetry = 10
            };

            var writeClient = new AmazonTimestreamWriteClient(writeClientConfig);
            var crudAndSimpleIngestionExample = new CrudAndSimpleIngestionExample(writeClient);
            var csvIngestionExample           = new CsvIngestionExample(writeClient);

            var queryClient  = new AmazonTimestreamQueryClient();
            var queryExample = new QueryExample(queryClient);

            await crudAndSimpleIngestionExample.CreateDatabase();

            await crudAndSimpleIngestionExample.DescribeDatabase();

            await crudAndSimpleIngestionExample.ListDatabases();

            if (kmsKeyId != null)
            {
                await crudAndSimpleIngestionExample.UpdateDatabase(kmsKeyId);
            }

            await crudAndSimpleIngestionExample.CreateTable();

            await crudAndSimpleIngestionExample.DescribeTable();

            await crudAndSimpleIngestionExample.ListTables();

            await crudAndSimpleIngestionExample.UpdateTable();

            // Simple records ingestion
            await crudAndSimpleIngestionExample.WriteRecords();

            await crudAndSimpleIngestionExample.WriteRecordsWithCommonAttributes();

            // upsert records
            await crudAndSimpleIngestionExample.WriteRecordsWithUpsert();

            if (csvFilePath != null)
            {
                // Bulk record ingestion for bootstrapping a table with fresh data
                await csvIngestionExample.BulkWriteRecords(csvFilePath);
            }

            await queryExample.RunAllQueries();

            // Try cancelling query
            await queryExample.CancelQuery();

            // Run query with multiple pages
            await queryExample.RunQueryWithMultiplePages(20000);

            // Commenting out clean up.
            // await crudAndSimpleIngestionExample.DeleteTable();
            // await crudAndSimpleIngestionExample.DeleteDatabase();
        }