public CreateTable ( |
||
request | Container for the necessary parameters to execute the CreateTable service method. | |
return |
public virtual void BuildTable(AmazonDynamoDBClient ddbClient, string tableName) { Console.WriteLine("Creating table."); var request = new CreateTableRequest { TableName = tableName, AttributeDefinitions = new List<AttributeDefinition> { new AttributeDefinition {AttributeName = "Company", AttributeType = "S"}, new AttributeDefinition {AttributeName = "Email", AttributeType = "S"} }, KeySchema = new List<KeySchemaElement> { new KeySchemaElement {AttributeName = "Company", KeyType = "HASH"}, new KeySchemaElement {AttributeName = "Email", KeyType = "RANGE"} }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 10, WriteCapacityUnits = 5 } }; ddbClient.CreateTable(request); // Pause until the table is active WaitForStatus(ddbClient, tableName, "ACTIVE"); Console.WriteLine("Table created and active."); }
/// <summary> /// Creates all samples defined in SampleTables map /// </summary> /// <param name="client"></param> public static void CreateSampleTables(AmazonDynamoDBClient client) { Console.WriteLine("Getting list of tables"); List<string> currentTables = client.ListTables().TableNames; Console.WriteLine("Number of tables: " + currentTables.Count); bool tablesAdded = false; if (!currentTables.Contains("Businesses")) { Console.WriteLine("Table Businesses does not exist, creating"); client.CreateTable(new CreateTableRequest { TableName = "Businesses", ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 3, WriteCapacityUnits = 1 }, KeySchema = new List<KeySchemaElement> { new KeySchemaElement { AttributeName = "Name", KeyType = KeyType.HASH }, new KeySchemaElement { AttributeName = "Id", KeyType = KeyType.RANGE } }, AttributeDefinitions = new List<AttributeDefinition> { new AttributeDefinition { AttributeName = "Name", AttributeType = ScalarAttributeType.S }, new AttributeDefinition { AttributeName = "Id", AttributeType = ScalarAttributeType.N } } }); tablesAdded = true; } if (tablesAdded) { bool allActive; do { allActive = true; Console.WriteLine("While tables are still being created, sleeping for 5 seconds..."); Thread.Sleep(TimeSpan.FromSeconds(5)); foreach (var tableName in SAMPLE_TABLE_NAMES) { string tableStatus = GetTableStatus(client, tableName); bool isTableActive = string.Equals(tableStatus, "ACTIVE", StringComparison.OrdinalIgnoreCase); if (!isTableActive) allActive = false; } } while (!allActive); } Console.WriteLine("All sample tables created"); }
private void CreateTable() { AmazonDynamoDBClient client = new AmazonDynamoDBClient(); CreateTableRequest request = new CreateTableRequest { TableName = s_TableName, KeySchema = new List<KeySchemaElement> { new KeySchemaElement("Application", KeyType.HASH), new KeySchemaElement("ErrorId", KeyType.RANGE), }, AttributeDefinitions = new List<AttributeDefinition> { new AttributeDefinition("Application", ScalarAttributeType.S), new AttributeDefinition("ErrorId", ScalarAttributeType.S), new AttributeDefinition("TimeUtc", ScalarAttributeType.S), new AttributeDefinition("AllXml", ScalarAttributeType.S), }, GlobalSecondaryIndexes = new List<GlobalSecondaryIndex> { new GlobalSecondaryIndex { IndexName = "Application-TimeUtc-index", KeySchema = new List<KeySchemaElement> { new KeySchemaElement("Application", KeyType.HASH), new KeySchemaElement("TimeUtc", KeyType.RANGE), } }, }, ProvisionedThroughput = new ProvisionedThroughput(40, 64), StreamSpecification = new StreamSpecification { StreamEnabled = true, StreamViewType = StreamViewType.NEW_IMAGE, }, }; CreateTableResponse response = client.CreateTable(request); if ((int)response.HttpStatusCode >= 400) throw new AmazonDynamoDBException(string.Format("CreateTable request ID {0} was unsuccessful.", response.ResponseMetadata.RequestId)); }
static void Main(string[] args) { var config = new AmazonDynamoDBConfig(); config.ServiceURL = "http://localhost:8000"; AmazonDynamoDBClient client = new AmazonDynamoDBClient(config); string tableName = "MonthlyTotals"; bool tableExists = false; string lastEvaluatedTableName = null; do { // Create a request object to specify optional parameters. var req = new ListTablesRequest { Limit = 10, // Page size. ExclusiveStartTableName = lastEvaluatedTableName }; var tblres = client.ListTables(req); foreach (string name in tblres.TableNames) { if (name.Equals(tableName)) { tableExists = true; break; } } if (tableExists) { break; } lastEvaluatedTableName = tblres.LastEvaluatedTableName; } while (lastEvaluatedTableName != null); if (!tableExists) { //Table doesnt exist, lets create it var request = new CreateTableRequest { TableName = tableName, AttributeDefinitions = new List<AttributeDefinition>() { new AttributeDefinition { AttributeName = "SKUId", AttributeType = "N" }, new AttributeDefinition { AttributeName = "Month", AttributeType = "S" } }, KeySchema = new List<KeySchemaElement>() { new KeySchemaElement { AttributeName = "SKUId", KeyType = "HASH" //Partition key }, new KeySchemaElement { AttributeName = "Month", KeyType = "RANGE" } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 10, WriteCapacityUnits = 5 } }; CreateTableResponse response = client.CreateTable(request); var tableDescription = response.TableDescription; Console.WriteLine("{1}: {0} \t ReadCapacityUnits: {2} \t WriteCapacityUnits: {3}", tableDescription.TableStatus, tableDescription.TableName, tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); string status = tableDescription.TableStatus; } var res = client.DescribeTable(new DescribeTableRequest { TableName = tableName }); Console.WriteLine(tableName + " - " + res.Table.TableStatus); Console.WriteLine(); Console.WriteLine("Test Crud?"); Console.ReadLine(); DynamoDBContext context = new DynamoDBContext(client); TestCRUDOperations(context); Console.ReadLine(); }
private void CreateLSITable() { #region CreateTable LSI 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 local secondary indexes: // Table has two indexes, one on "Year" and the other on "Setting" List<LocalSecondaryIndex> indexes = new List<LocalSecondaryIndex> { new LocalSecondaryIndex { IndexName = "YearsIndex", KeySchema = new List<KeySchemaElement> { // Hash key must match table hash key new KeySchemaElement { AttributeName = "Author", KeyType = "HASH" }, // Secondary index on "Year" attribute new KeySchemaElement { AttributeName = "Year", KeyType = "RANGE" } }, // Projection type is set to ALL, all attributes returned for this index Projection = new Projection { ProjectionType = "ALL" } }, new LocalSecondaryIndex { IndexName = "SettingsIndex", KeySchema = new List<KeySchemaElement> { // Hash key must match table hash key new KeySchemaElement { AttributeName = "Author", KeyType = "HASH" }, // Secondary index on "Setting" attribute new KeySchemaElement { AttributeName = "Setting", KeyType = "RANGE" } }, // Projection type is set to INCLUDE, the specified attributes + keys are returned Projection = new Projection { ProjectionType = "INCLUDE", NonKeyAttributes = new List<string> { "Pages", "Genres" } } } }; // Define key attributes: // The key attributes "Author" and "Title" are string types. // The local secondary index attributes are "Year" (numerical) and "Setting" (string). List<AttributeDefinition> definitions = new List<AttributeDefinition> { new AttributeDefinition { AttributeName = "Author", AttributeType = "S" }, new AttributeDefinition { AttributeName = "Title", AttributeType = "S" }, new AttributeDefinition { AttributeName = "Year", AttributeType = "N" }, new AttributeDefinition { AttributeName = "Setting", 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, LocalSecondaryIndexes = indexes }; // 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 }
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 } }
public virtual void BuildTable(AmazonDynamoDBClient ddbClient, string tableName) { _Default.LogMessageToPage("Creating table."); var request = new CreateTableRequest { TableName = tableName, AttributeDefinitions = new List<AttributeDefinition> { new AttributeDefinition {AttributeName = "Key", AttributeType = "S"}, new AttributeDefinition {AttributeName = "Bucket", AttributeType = "S"} }, KeySchema = new List<KeySchemaElement> { new KeySchemaElement {AttributeName = "Key", KeyType = "HASH"}, new KeySchemaElement {AttributeName = "Bucket", KeyType = "RANGE"} }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 5, WriteCapacityUnits = 5 } }; ddbClient.CreateTable(request); // Pause until the table is active (timeout after 2 mins) WaitForStatus(ddbClient, tableName, "ACTIVE", DateTime.Now + TimeSpan.FromMinutes(2)); _Default.LogMessageToPage("Table created and active."); }
public void Can_put_item_with_null_value() { var db = new AmazonDynamoDBClient("keyId", "key", new AmazonDynamoDBConfig { ServiceURL = "http://localhost:8000", }); try { db.DeleteTable(new DeleteTableRequest { TableName = "Test", }); Thread.Sleep(1000); } catch (Exception) { /*ignore*/ } db.CreateTable(new CreateTableRequest { TableName = "Test", KeySchema = new List<KeySchemaElement> { new KeySchemaElement { AttributeName = "Id", KeyType = "HASH" } }, AttributeDefinitions = new List<AttributeDefinition> { new AttributeDefinition { AttributeName = "Id", AttributeType = "N", } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 10, WriteCapacityUnits = 5, } }); Thread.Sleep(1000); db.PutItem(new PutItemRequest { TableName = "Test", Item = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "1" } }, { "Name", new AttributeValue { S = "Foo"} }, { "Empty", new AttributeValue { NULL = true } }, } }); var response = db.GetItem(new GetItemRequest { TableName = "Test", ConsistentRead = true, Key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "1" } } } }); Assert.That(response.IsItemSet); Assert.That(response.Item["Id"].N, Is.EqualTo("1")); Assert.That(response.Item["Name"].S, Is.EqualTo("Foo")); Assert.That(response.Item["Empty"].NULL); }