public void CreateIfNotExist() { var request = new DescribeTableRequest { TableName = _config.TableName }; try { _client.DescribeTable(request); } catch (ResourceNotFoundException) { CreateTable(); } }
private void AssertDynamoDbExists(string tableName) { var request = new DescribeTableRequest { TableName = tableName }; try { var response = _client.DescribeTable(request); } catch (ResourceNotFoundException) { Assert.Fail("Table {0} doesn't exist!", _tableName); } }
public object Execute(ExecutorContext context) { var cmdletContext = context as CmdletContext; // create request var request = new Amazon.DynamoDBv2.Model.DescribeTableRequest(); if (cmdletContext.TableName != null) { request.TableName = cmdletContext.TableName; } CmdletOutput output; // issue call var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint); try { var response = CallAWSServiceOperation(client, request); object pipelineOutput = null; pipelineOutput = cmdletContext.Select(response, this); output = new CmdletOutput { PipelineOutput = pipelineOutput, ServiceResponse = response }; } catch (Exception e) { output = new CmdletOutput { ErrorResponse = e }; } return(output); }
/// <summary> /// Returns information about the table, including the current status of the table, when /// it was created, the primary key schema, and any indexes on the table. /// /// <note> /// <para> /// If you issue a DescribeTable request immediately after a CreateTable request, DynamoDB /// might return a ResourceNotFoundException. This is because DescribeTable uses an eventually /// consistent query, and the metadata for your table might not be available at that moment. /// Wait for a few seconds, and then try the DescribeTable request again. /// </para> /// </note> /// </summary> /// <param name="tableName"> The name of the table to describe.</param> /// /// <returns>The response from the DescribeTable service method, as returned by DynamoDB.</returns> /// <exception cref="Amazon.DynamoDBv2.Model.InternalServerErrorException"> /// An error occurred on the server side. /// </exception> /// <exception cref="Amazon.DynamoDBv2.Model.ResourceNotFoundException"> /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be <code>ACTIVE</code>. /// </exception> public DescribeTableResponse DescribeTable(string tableName) { var request = new DescribeTableRequest(); request.TableName = tableName; return DescribeTable(request); }
/// <summary> /// <para>Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any /// indexes on the table.</para> /// </summary> /// /// <param name="describeTableRequest">Container for the necessary parameters to execute the DescribeTable service method on /// AmazonDynamoDBv2.</param> /// /// <returns>The response from the DescribeTable service method, as returned by AmazonDynamoDBv2.</returns> /// /// <exception cref="T:Amazon.DynamoDBv2.Model.ResourceNotFoundException" /> /// <exception cref="T:Amazon.DynamoDBv2.Model.InternalServerErrorException" /> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> public Task<DescribeTableResponse> DescribeTableAsync(DescribeTableRequest describeTableRequest, CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new DescribeTableRequestMarshaller(); var unmarshaller = DescribeTableResponseUnmarshaller.GetInstance(); return Invoke<IRequest, DescribeTableRequest, DescribeTableResponse>(describeTableRequest, marshaller, unmarshaller, signer, cancellationToken); }
internal DescribeTableResponse DescribeTable(DescribeTableRequest request) { var task = DescribeTableAsync(request); try { return task.Result; } catch(AggregateException e) { ExceptionDispatchInfo.Capture(e.InnerException).Throw(); return null; } }
private TableDescription DescribeTable(string tableName) { DescribeTableRequest req = new DescribeTableRequest { TableName = TableName }; ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)req).AddBeforeRequestHandler(new RequestEventHandler(this.UserAgentRequestEventHandlerSync)); var info = this.DDBClient.DescribeTable(req); if (info.Table == null) { throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Table name {0} does not exist", TableName)); } return info.Table; }
/// <summary> /// Initiates the asynchronous execution of the DescribeTable operation. /// <seealso cref="Amazon.DynamoDBv2.IAmazonDynamoDB"/> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the DescribeTable operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task<DescribeTableResponse> DescribeTableAsync(DescribeTableRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new DescribeTableRequestMarshaller(); var unmarshaller = DescribeTableResponseUnmarshaller.Instance; return InvokeAsync<DescribeTableRequest,DescribeTableResponse>(request, marshaller, unmarshaller, cancellationToken); }
/// <summary> /// <para>Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any /// indexes on the table.</para> /// </summary> /// /// <param name="describeTableRequest">Container for the necessary parameters to execute the DescribeTable service method on /// AmazonDynamoDBv2.</param> /// /// <returns>The response from the DescribeTable service method, as returned by AmazonDynamoDBv2.</returns> /// /// <exception cref="ResourceNotFoundException"/> /// <exception cref="InternalServerErrorException"/> public DescribeTableResponse DescribeTable(DescribeTableRequest describeTableRequest) { IAsyncResult asyncResult = invokeDescribeTable(describeTableRequest, null, null, true); return EndDescribeTable(asyncResult); }
/// <summary> /// Initiates the asynchronous execution of the DescribeTable operation. /// <seealso cref="Amazon.DynamoDBv2.IAmazonDynamoDB.DescribeTable"/> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the DescribeTable operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public async Task<DescribeTableResponse> DescribeTableAsync(DescribeTableRequest request, CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new DescribeTableRequestMarshaller(); var unmarshaller = DescribeTableResponseUnmarshaller.GetInstance(); var response = await Invoke<IRequest, DescribeTableRequest, DescribeTableResponse>(request, marshaller, unmarshaller, signer, cancellationToken) .ConfigureAwait(continueOnCapturedContext: false); return response; }
public void DataPlaneSamples() { { #region CreateTable Sample // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Define table schema: // Table has a hash-key "Author" and a range-key "Title" List<KeySchemaElement> schema = new List<KeySchemaElement> { new KeySchemaElement { AttributeName = "Author", KeyType = "HASH" }, new KeySchemaElement { AttributeName = "Title", KeyType = "RANGE" } }; // Define key attributes: // The key attributes "Author" and "Title" are string types List<AttributeDefinition> definitions = new List<AttributeDefinition> { new AttributeDefinition { AttributeName = "Author", AttributeType = "S" }, new AttributeDefinition { AttributeName = "Title", AttributeType = "S" } }; // Define table throughput: // Table has capacity of 20 reads and 50 writes ProvisionedThroughput throughput = new ProvisionedThroughput { ReadCapacityUnits = 20, WriteCapacityUnits = 50 }; // Configure the CreateTable request CreateTableRequest request = new CreateTableRequest { TableName = "SampleTable", KeySchema = schema, ProvisionedThroughput = throughput, AttributeDefinitions = definitions }; // View new table properties TableDescription tableDescription = client.CreateTable(request).TableDescription; Console.WriteLine("Table name: {0}", tableDescription.TableName); Console.WriteLine("Creation time: {0}", tableDescription.CreationDateTime); Console.WriteLine("Item count: {0}", tableDescription.ItemCount); Console.WriteLine("Table size (bytes): {0}", tableDescription.TableSizeBytes); Console.WriteLine("Table status: {0}", tableDescription.TableStatus); // List table key schema List<KeySchemaElement> tableSchema = tableDescription.KeySchema; for (int i = 0; i < tableSchema.Count; i++) { KeySchemaElement element = tableSchema[i]; Console.WriteLine("Key: Name = {0}, KeyType = {1}", element.AttributeName, element.KeyType); } // List attribute definitions List<AttributeDefinition> attributeDefinitions = tableDescription.AttributeDefinitions; for (int i = 0; i < attributeDefinitions.Count; i++) { AttributeDefinition definition = attributeDefinitions[i]; Console.WriteLine("Attribute: Name = {0}, Type = {1}", definition.AttributeName, definition.AttributeType); } Console.WriteLine("Throughput: Reads = {0}, Writes = {1}", tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); #endregion } { #region DescribeTable Sample // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Create DescribeTable request DescribeTableRequest request = new DescribeTableRequest { TableName = "SampleTable" }; // Issue DescribeTable request and retrieve the table description TableDescription tableDescription = client.DescribeTable(request).Table; // View new table properties Console.WriteLine("Table name: {0}", tableDescription.TableName); Console.WriteLine("Creation time: {0}", tableDescription.CreationDateTime); Console.WriteLine("Item count: {0}", tableDescription.ItemCount); Console.WriteLine("Table size (bytes): {0}", tableDescription.TableSizeBytes); Console.WriteLine("Table status: {0}", tableDescription.TableStatus); // List table key schema List<KeySchemaElement> tableSchema = tableDescription.KeySchema; for (int i = 0; i < tableSchema.Count; i++) { KeySchemaElement element = tableSchema[i]; Console.WriteLine("Key: Name = {0}, KeyType = {1}", element.AttributeName, element.KeyType); } // List attribute definitions List<AttributeDefinition> attributeDefinitions = tableDescription.AttributeDefinitions; for (int i = 0; i < attributeDefinitions.Count; i++) { AttributeDefinition definition = attributeDefinitions[i]; Console.WriteLine("Attribute: Name = {0}, Type = {1}", definition.AttributeName, definition.AttributeType); } Console.WriteLine("Throughput: Reads = {0}, Writes = {1}", tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); #endregion } { #region ListTables Paging Sample // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string startTableName = null; do { // Configure ListTables request with the marker value ListTablesRequest request = new ListTablesRequest { ExclusiveStartTableName = startTableName, }; // Issue call ListTablesResult result = client.ListTables(request); // List retrieved tables List<string> tables = result.TableNames; Console.WriteLine("Retrieved tables: {0}", string.Join(", ", tables)); // Update marker value from the result startTableName = result.LastEvaluatedTableName; } while (!string.IsNullOrEmpty(startTableName)); // Test marker value #endregion } { #region ListTables NonPaging Sample // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Issue call ListTablesResult result = client.ListTables(); // List retrieved tables List<string> tables = result.TableNames; Console.WriteLine("Retrieved tables: {0}", string.Join(", ", tables)); #endregion } TableUtils.WaitUntilTableActive("SampleTable", TestClient); { #region UpdateTable Sample // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Define new table throughput: // Table will now have capacity of 40 reads and 50 writes ProvisionedThroughput throughput = new ProvisionedThroughput { ReadCapacityUnits = 40, WriteCapacityUnits = 50 }; // Compose the UpdateTable request UpdateTableRequest request = new UpdateTableRequest { TableName = "SampleTable", ProvisionedThroughput = throughput }; // View new table properties TableDescription tableDescription = client.UpdateTable(request).TableDescription; Console.WriteLine("Table name: {0}", tableDescription.TableName); Console.WriteLine("Throughput: Reads = {0}, Writes = {1}", tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); #endregion } TableUtils.WaitUntilTableActive("SampleTable", TestClient); { #region DeleteTable Sample // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Configure the DeleteTable request DeleteTableRequest request = new DeleteTableRequest { TableName = "SampleTable" }; // Issue DeleteTable request and retrieve the table description TableDescription tableDescription = client.DeleteTable(request).TableDescription; Console.WriteLine("Table name: {0}", tableDescription.TableName); Console.WriteLine("Table status: {0}", tableDescription.TableStatus); #endregion } }
/// <summary> /// Initiates the asynchronous execution of the DescribeTable operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the DescribeTable operation on AmazonDynamoDBClient.</param> /// <param name="callback">An Action delegate that is invoked when the operation completes.</param> /// <param name="options">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> public void DescribeTableAsync(DescribeTableRequest request, AmazonServiceCallback<DescribeTableRequest, DescribeTableResponse> callback, AsyncOptions options = null) { options = options == null?new AsyncOptions():options; var marshaller = new DescribeTableRequestMarshaller(); var unmarshaller = DescribeTableResponseUnmarshaller.Instance; Action<AmazonWebServiceRequest, AmazonWebServiceResponse, Exception, AsyncOptions> callbackHelper = null; if(callback !=null ) callbackHelper = (AmazonWebServiceRequest req, AmazonWebServiceResponse res, Exception ex, AsyncOptions ao) => { AmazonServiceResult<DescribeTableRequest,DescribeTableResponse> responseObject = new AmazonServiceResult<DescribeTableRequest,DescribeTableResponse>((DescribeTableRequest)req, (DescribeTableResponse)res, ex , ao.State); callback(responseObject); }; BeginInvoke<DescribeTableRequest>(request, marshaller, unmarshaller, options, callbackHelper); }
/// <summary> /// Returns information about the table, including the current status of the table, when /// it was created, the primary key schema, and any indexes on the table. /// /// <note> /// <para> /// If you issue a DescribeTable request immediately after a CreateTable request, DynamoDB /// might return a ResourceNotFoundException. This is because DescribeTable uses an eventually /// consistent query, and the metadata for your table might not be available at that moment. /// Wait for a few seconds, and then try the DescribeTable request again. /// </para> /// </note> /// </summary> /// <param name="tableName"> The name of the table to describe.</param> /// /// <returns>The response from the DescribeTable service method, as returned by DynamoDB.</returns> /// <exception cref="Amazon.DynamoDBv2.Model.InternalServerErrorException"> /// An error occurred on the server side. /// </exception> /// <exception cref="Amazon.DynamoDBv2.Model.ResourceNotFoundException"> /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be <code>ACTIVE</code>. /// </exception> public void DescribeTableAsync(string tableName, AmazonServiceCallback<DescribeTableRequest, DescribeTableResponse> callback, AsyncOptions options = null) { var request = new DescribeTableRequest(); request.TableName = tableName; DescribeTableAsync(request, callback, options); }
private Amazon.DynamoDBv2.Model.DescribeTableResponse CallAWSServiceOperation(IAmazonDynamoDB client, Amazon.DynamoDBv2.Model.DescribeTableRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon DynamoDB", "DescribeTable"); try { #if DESKTOP return(client.DescribeTable(request)); #elif CORECLR return(client.DescribeTableAsync(request).GetAwaiter().GetResult()); #else #error "Unknown build edition" #endif } catch (AmazonServiceException exc) { var webException = exc.InnerException as System.Net.WebException; if (webException != null) { throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException); } throw; } }
IAsyncResult invokeDescribeTable(DescribeTableRequest describeTableRequest, AsyncCallback callback, object state, bool synchronized) { IRequest irequest = new DescribeTableRequestMarshaller().Marshall(describeTableRequest); var unmarshaller = DescribeTableResponseUnmarshaller.GetInstance(); AsyncResult result = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller); Invoke(result); return result; }
/// <summary> /// Initiates the asynchronous execution of the DescribeTable operation. /// <seealso cref="Amazon.DynamoDBv2.AmazonDynamoDB.DescribeTable"/> /// </summary> /// /// <param name="describeTableRequest">Container for the necessary parameters to execute the DescribeTable operation on /// AmazonDynamoDBv2.</param> /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param> /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> /// /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeTable /// operation.</returns> public IAsyncResult BeginDescribeTable(DescribeTableRequest describeTableRequest, AsyncCallback callback, object state) { return invokeDescribeTable(describeTableRequest, callback, state, false); }
internal DescribeTableResponse DescribeTable(DescribeTableRequest request) { var task = DescribeTableAsync(request); try { return task.Result; } catch(AggregateException e) { throw e.InnerException; } }
internal DescribeTableResponse DescribeTable(DescribeTableRequest request) { var marshaller = new DescribeTableRequestMarshaller(); var unmarshaller = DescribeTableResponseUnmarshaller.Instance; return Invoke<DescribeTableRequest,DescribeTableResponse>(request, marshaller, unmarshaller); }
private void GetTableInfo() { DescribeTableRequest req = new DescribeTableRequest { TableName = TableName }; req.BeforeRequestEvent += new RequestEventHandler(this.UserAgentRequestEventHandlerSync); DescribeTableResult info = this.DDBClient.DescribeTable(req); if (info.Table == null) { throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Table name {0} does not exist", TableName)); } Keys.Clear(); HashKeys.Clear(); RangeKeys.Clear(); TableDescription table = info.Table; foreach (var key in table.KeySchema) { string keyName = key.AttributeName; AttributeDefinition attributeDefinition = table.AttributeDefinitions .FirstOrDefault(a => string.Equals(a.AttributeName, keyName, StringComparison.Ordinal)); if (attributeDefinition == null) throw new InvalidOperationException("No attribute definition found for key " + key.AttributeName); KeyDescription keyDescription = new KeyDescription { IsHash = string.Equals(key.KeyType, "HASH", StringComparison.OrdinalIgnoreCase), Type = GetType(attributeDefinition.AttributeType) }; if (keyDescription.IsHash) HashKeys.Add(keyName); else RangeKeys.Add(keyName); Keys[keyName] = keyDescription; } LocalSecondaryIndexes.Clear(); LocalSecondaryIndexNames.Clear(); if (table.LocalSecondaryIndexes != null) { foreach (var index in table.LocalSecondaryIndexes) { LocalSecondaryIndexes[index.IndexName] = index; LocalSecondaryIndexNames.Add(index.IndexName); } } GlobalSecondaryIndexes.Clear(); GlobalSecondaryIndexNames.Clear(); if (table.GlobalSecondaryIndexes != null) { foreach (var index in table.GlobalSecondaryIndexes) { GlobalSecondaryIndexes[index.IndexName] = index; GlobalSecondaryIndexNames.Add(index.IndexName); } } Attributes.Clear(); foreach (var attribute in table.AttributeDefinitions) { Attributes.Add(attribute); } keyNames = Keys.Keys.ToArray(); }
void DescribeTableListener() { resultText.text = ("\n*** Retrieving table information ***\n"); var request = new DescribeTableRequest { TableName = @"ProductCatalog" }; Client.DescribeTableAsync(request, (result) => { if (result.Exception != null) { resultText.text += result.Exception.Message; Debug.Log(result.Exception); return; } var response = result.Response; TableDescription description = response.Table; resultText.text += ("Name: " + description.TableName + "\n"); resultText.text += ("# of items: " + description.ItemCount + "\n"); resultText.text += ("Provision Throughput (reads/sec): " + description.ProvisionedThroughput.ReadCapacityUnits + "\n"); resultText.text += ("Provision Throughput (reads/sec): " + description.ProvisionedThroughput.WriteCapacityUnits + "\n"); }, null); }
/// <summary> /// Initiates the asynchronous execution of the DescribeTable operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the DescribeTable operation on AmazonDynamoDBClient.</param> /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param> /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> /// /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDescribeTable /// operation.</returns> public IAsyncResult BeginDescribeTable(DescribeTableRequest request, AsyncCallback callback, object state) { var marshaller = new DescribeTableRequestMarshaller(); var unmarshaller = DescribeTableResponseUnmarshaller.Instance; return BeginInvoke<DescribeTableRequest>(request, marshaller, unmarshaller, callback, state); }
private Table CreateTable() { CreateTableRequest createRequest = new CreateTableRequest { TableName = this._tableName, KeySchema = new List<KeySchemaElement> { new KeySchemaElement { AttributeName = ATTRIBUTE_SESSION_ID, KeyType = "HASH" } }, AttributeDefinitions = new List<AttributeDefinition> { new AttributeDefinition { AttributeName = ATTRIBUTE_SESSION_ID, AttributeType = "S" } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = this._initialReadUnits, WriteCapacityUnits = this._initialWriteUnits } }; CreateTableResponse response = this._ddbClient.CreateTable(createRequest); DescribeTableRequest descRequest = new DescribeTableRequest { TableName = this._tableName }; // Wait till table is active bool isActive = false; while (!isActive) { Thread.Sleep(DESCRIBE_INTERVAL); DescribeTableResponse descResponse = this._ddbClient.DescribeTable(descRequest); string tableStatus = descResponse.Table.TableStatus; if (string.Equals(tableStatus, ACTIVE_STATUS, StringComparison.InvariantCultureIgnoreCase)) isActive = true; } Table table = Table.LoadTable(this._ddbClient, this._tableName, DynamoDBEntryConversion.V1); return table; }
/// <summary> /// Returns information about the table, including the current status of the table, when /// it was created, the primary key schema, and any indexes on the table. /// /// <note> /// <para> /// If you issue a DescribeTable request immediately after a CreateTable request, DynamoDB /// might return a ResourceNotFoundException. This is because DescribeTable uses an eventually /// consistent query, and the metadata for your table might not be available at that moment. /// Wait for a few seconds, and then try the DescribeTable request again. /// </para> /// </note> /// </summary> /// <param name="tableName"> The name of the table to describe.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// /// <returns>The response from the DescribeTable service method, as returned by DynamoDB.</returns> /// <exception cref="Amazon.DynamoDBv2.Model.InternalServerErrorException"> /// An error occurred on the server side. /// </exception> /// <exception cref="Amazon.DynamoDBv2.Model.ResourceNotFoundException"> /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be <code>ACTIVE</code>. /// </exception> public Task<DescribeTableResponse> DescribeTableAsync(string tableName, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var request = new DescribeTableRequest(); request.TableName = tableName; return DescribeTableAsync(request, cancellationToken); }