本文档通过AWS CLI、Python、Java多个维度,介绍如何连接到DynamoDB协议兼容版实例。
准备工作
- 获取DynamoDB协议兼容版实例的连接地址。
- 登录MongoDB管理控制台。
- 在页面左上角,选择实例所在的资源组和地域。
- 在左侧导航栏,单击分片集群实例列表。
- 找到目标实例,单击实例ID。
- 在左侧导航栏,单击数据库连接。
- 在私网连接 - 专有网络区域,查看实例的连接地址。
- 可选:如果应用部署在ECS实例,您需要确保云数据库MongoDB实例和ECS服务器满足以下条件,以保证网络的连通性。
- 所在地域相同。如果您已经创建了ECS服务器,您可以查看ECS所在地域,查看方法请参见查看ECS实例所在地域。
- 可选:建议所属可用区相同,以减少网络延时。如果您已经创建了ECS服务器,您可以查看ECS所在可用区,查看方法请参见查看ECS实例所在地域。
- 网络类型相同。如果您已经创建了ECS服务器,您可以查看ECS的网络类型,查看方法请参见查看ECS实例网络类型。当ECS服务器的网络类型为经典网络时,您可以将经典网络迁移至专有网络,迁移方法请参见ECS实例从经典网络迁移到专有网络。
AWS CLI连接示例
以Ubuntu 16.04.6 LTS系统为例介绍通过AWS CLI(AWS Command Line Interface)连接DynamoDB协议兼容版实例的方法。关于AWS CLI的详细信息,请参见AWS Command Line Interface是什么。
Python连接示例
以下代码演示通过Python连接到DynamoDB协议兼容版实例并创建一个名为
Book
的表格:import boto3
def create_book_table(dynamodb=None):
if not dynamodb:
dynamodb = boto3.resource('dynamodb', endpoint_url="http://dds-xxxx.mongodb.rds.aliyuncs.com:3717")
table = dynamodb.create_table(
TableName='Book',
KeySchema=[
{
'AttributeName':'title',
'KeyType':'HASH'
},
{
'AttributeName':'year',
'KeyType':'RANGE'
}
],
AttributeDefinitions=[
{
'AttributeName':'title',
'AttributeType':'S'
},
{
'AttributeName':'year',
'AttributeType':'N'
},
],
ProvisionedThroughput={
'ReadCapacityUnits':5,
'WriteCapacityUnits':5
}
)
return table
if __name__ == '__main__':
book_table =create_book_table()
print("Tablestatus:", book_table.table_status)
Java连接示例
安装AWS SDK for Java,具体请参见安装AWS SDK for Java。
以下代码演示通过Java连接到DynamoDB协议兼容版实例并创建一个名为
Book
的表格:package com.amazonaws.codesamples.gsg;
import java.util.Arrays;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
public class MoviesCreateTable {
public static void main(String[] args) throws Exception {
AmazonDynamoDB client =AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://dds-xxxx.mongodb.rds.aliyuncs.com:3717",
"us-east-1"))
.build();
DynamoDB dynamoDB = new DynamoDB(client);
String tableName ="Book";
try {
System.out.println("Creating table...");
Table table =dynamoDB.createTable(tableName,
Arrays.asList(new
KeySchemaElement("title", KeyType.HASH), // 分区键
new KeySchemaElement("year", KeyType.RANGE)), // 排序键
Arrays.asList(new AttributeDefinition("title", ScalarAttributeType.S),
new AttributeDefinition("year", ScalarAttributeType.N)),
new ProvisionedThroughput(5L, 5L));
table.waitForActive();
System.out.println("OK. Table status: " + table.getDescription().getTableStatus());
}
catch (Exception e) {
System.err.println("Unable to create table: ");
System.err.println(e.getMessage());
}
}
}