private async Task <Dictionary <String, String> > CreateResourcesForScheduledQuery( Dictionary <String, String> resourcesDict) { //Create database and table to store scheduled query results await _timestreamCrudHelper.CreateDatabase(_amazonTimestreamWrite, ScheduledQueryConstants.SqDatabaseName); await _timestreamCrudHelper.CreateTable(_amazonTimestreamWrite, ScheduledQueryConstants.SqDatabaseName, ScheduledQueryConstants.SqTableName, resourcesDict[AwsResourceConstant.BucketName]); //Create sns and sqs for scheduled query string topicArn = await _timestreamDependencyHelper.CreateSnsTopic(snsClient, ScheduledQueryConstants.TopicName); resourcesDict.Add(ScheduledQueryConstants.TopicArn, topicArn); string sqsQueueUrl = await _timestreamDependencyHelper.CreateQueue(sqsClient, ScheduledQueryConstants.FifoQueueName); resourcesDict.Add(ScheduledQueryConstants.QueueUrl, sqsQueueUrl); string sqsQueueArn = await _timestreamDependencyHelper.GetQueueArn(sqsClient, sqsQueueUrl); string subscriptionArn = await _timestreamDependencyHelper.SubscribeToSnsTopic(snsClient, topicArn, sqsQueueArn); resourcesDict.Add(ScheduledQueryConstants.SubscriptionArn, subscriptionArn); await _timestreamDependencyHelper.SetSqsAccessPolicy(sqsClient, sqsQueueUrl, topicArn, sqsQueueArn); string roleArn = await _timestreamDependencyHelper.CreateIamRole(iamClient, ScheduledQueryConstants.IamRoleName, regionEndpoint.SystemName); resourcesDict.Add(ScheduledQueryConstants.RoleName, ScheduledQueryConstants.IamRoleName); resourcesDict.Add(ScheduledQueryConstants.RoleArn, roleArn); string policyArn = await _timestreamDependencyHelper.CreateIamPolicy(iamClient, ScheduledQueryConstants.PolicyName); resourcesDict.Add(ScheduledQueryConstants.PolicyArn, policyArn); await _timestreamDependencyHelper.AttachIamRolePolicy(iamClient, ScheduledQueryConstants.IamRoleName, policyArn); // Wait at-least 15s for policy to be ready Console.WriteLine("Waiting 15 seconds for policy to be ready"); Thread.Sleep(15000); return(resourcesDict); }
public async Task CreateDatabase() { await _crudHelper.CreateDatabase(writeClient, Constants.DATABASE_NAME); }
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(); } }