Bu konu, AWS CLI, Python ve Java kullanarak DynamoDB uyumlu bir örneğe nasıl bağlanılacağını açıklar.
Ön koşullar
DynamoDB uyumlu bir örnek gerekir. Örneği oluştururken protokol türü olarak DynamoDB seçin. Daha fazla bilgi için bkz. Parçalı küme örneği oluşturma.
Bağlantı uç noktası
DynamoDB uyumlu örneğinizin bağlantı uç noktasını alın.
ApsaraDB for MongoDB konsolu üzerinde oturum açın.
Sayfanın sol üst köşesinde örneğin kaynak grubunu ve bölgesini seçin.
Sol gezinme bölmesinde List of Shard cluster instances öğesine tıklayın.
Hedef örneği bulun ve kimliğine tıklayın.
Sol gezinme bölmesinde Database Connection öğesine tıklayın.
VPC Connection bölümünde örneğin bağlantı uç noktasını görüntüleyin. Bu uç noktanın Protocol Type değeri DynamoDB-compatible protocol şeklindedir ve adres
dds-ile başlar.
Uygulamanız bir ECS örneğinde dağıtılmışsa ağ bağlantısını sağlamak için ApsaraDB for MongoDB örneğiniz ile ECS örneğinin aşağıdaki koşulları karşılaması gerekir.
Her ikisi de aynı bölgede olmalıdır. Mevcut bir ECS örneğiniz varsa bölgesini kontrol edebilirsiniz. Daha fazla bilgi için bkz. ECS örneğinin bölgesini görüntüleme.
İsteğe bağlı: Ağ gecikme süresini düşürmek için her ikisini de aynı alana yerleştirmenizi öneririz. Mevcut bir ECS örneğiniz varsa alanını kontrol edebilirsiniz. Daha fazla bilgi için bkz. ECS örneğinin alanını görüntüleme.
Her ikisi de aynı ağ türünü kullanmalıdır. Mevcut bir ECS örneğiniz varsa ağ türünü kontrol edebilirsiniz. Daha fazla bilgi için bkz. ECS örneğinin ağ türünü görüntüleme. ECS örneği Classic network kullanıyorsa bunu Classic network türünden bir VPC türüne geçirebilirsiniz. Daha fazla bilgi için bkz. ECS örneğini klasik ağdan VPC'ye geçirme.
AWS CLI kullanarak bağlanma
Bu bölümde Ubuntu 16.04.6 LTS sistemde AWS Command Line Interface (AWS CLI) kullanarak bir DynamoDB uyumlu örneğe nasıl bağlanılacağı gösterilir. AWS CLI hakkında daha fazla bilgi için bkz. AWS Command Line Interface Nedir?.
-
AWS CLI istemcisini yükleyin.
-
AWS CLI'nin en son sürümünü indirmek ve
awscliv2.zipolarak kaydetmek için aşağıdaki komutu çalıştırın:curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" -
awscliv2.zipdosyasının içeriğini çıkarmak için aşağıdaki komutu çalıştırın:unzip awscliv2.zipNotunzipyüklü değilse yüklemek içinsudo apt install unzipkomutunu çalıştırın. -
AWS CLI'yi yüklemek için aşağıdaki komutu çalıştırın:
sudo ./aws/install
You can now run: /usr/local/bin/aws --versionmesajı göründüğünde AWS CLI yüklenmiş demektir. Ardından AWS CLI'nin mevcut sürümünü kontrol etmek için/usr/local/bin/aws --versionkomutunu çalıştırabilirsiniz. -
-
AWS CLI'yi yapılandırmak için
/usr/local/bin/aws configurekomutunu çalıştırın. Her bir değerden sonra Enter tuşuna basarak aşağıdaki değerleri girin.
Parametre
Açıklama
ÖrnekAWS Access Key ID
Bir erişim anahtarı kimliği girin. DynamoDB uyumlu hizmet bu anahtarı doğrulamadığından herhangi bir karakter dizisi girebilirsiniz.XXXXXXXXXXAWS Secret Access Key
Bir gizli erişim anahtarı girin. DynamoDB uyumlu hizmet bu anahtarı doğrulamadığından herhangi bir karakter dizisi girebilirsiniz.XXXXXXXXXXDefault region name
Varsayılan bir AWS bölge adı girin.us-west-2Default output format
Varsayılan çıkış biçimi. Bu parametreyi boş bırakabilirsiniz.jsonNotAWS CLI'yi yapılandırma hakkında daha fazla bilgi için bkz. Yapılandırma temelleri.
-
Hedef DynamoDB uyumlu örneğe bağlanmak ve bir tablo oluşturmak için aşağıdaki komutu çalıştırın.
aws dynamodb --endpoint-url <connection-endpoint-of-your-DynamoDB-compatible-instance> \ create-table --table-name <your-table-name> \ --attribute-definitions AttributeName=<attribute-name>,AttributeType=<attribute-data-type> \ --key-schema AttributeName=<primary-key-attribute-name>,KeyType=<key-role> \ --provisioned-throughput ReadCapacityUnits=<provisioned-read-throughput>,WriteCapacityUnits=<provisioned-write-throughput>Parametre
Açıklama
--endpoint-urlHedef DynamoDB uyumlu örneğin uç noktası. Uç nokta
http://ile başlamalıdır.create-tableTablo oluşturma komutu.
NotDaha fazla bilgi için bkz. create-table.
--table-nameOluşturulacak tablonun adı.
--attribute-definitionsTablo veya dizinin anahtar şemasını açıklayan niteliklerden oluşan bir dizi. Bu parametre aşağıdaki alt parametreleri gerektirir:
-
AttributeName: Niteliğin adı. -
AttributeType: Niteliğin veri türü.NotDaha fazla bilgi için bkz. create-table.
--key-schemaBir tablo veya dizin için birincil anahtarı oluşturan nitelikler. Bu parametre aşağıdaki alt parametreleri gerektirir:
-
AttributeName: Bir anahtar niteliğinin adı. Nitelik,--attribute-definitionsparametresi kullanılarak tanımlanır. -
KeyType: Anahtarın rolü. Geçerli değerler: HASH ve RANGE. HASH bölüm anahtarını, RANGE ise sıralama anahtarını belirtir.NotDaha fazla bilgi için bkz. create-table.
--provisioned-throughputTablo veya dizin için sağlanan aktarım hızı ayarları. Bu parametre aşağıdaki alt parametreleri gerektirir:
-
ReadCapacityUnits: Sağlanan okuma aktarım hızı. -
WriteCapacityUnits: Sağlanan yazma aktarım hızı.
NotDaha fazla bilgi için bkz. create-table.
Örnek:
/usr/local/bin/aws dynamodb --endpoint-url http://dds-xxxx.mongodb.rds.aliyuncs.com:3717 \ # Connect to the specified endpoint of the DynamoDB-compatible instance. create-table --table-name student \ # Create a table named student. --attribute-definitions AttributeName=name,AttributeType=S AttributeName=age,AttributeType=N \ # The table schema includes a 'name' attribute of type String (S) and an 'age' attribute of type Number (N). --key-schema AttributeName=name,KeyType=HASH AttributeName=age,KeyType=RANGE \ # Specify 'name' as the partition key and 'age' as the sort key. --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 # Set the provisioned read throughput and provisioned write throughput to 5.Aşağıdaki çıktı döndürülürse hedef DynamoDB uyumlu örneğe bağlanmış ve bir tablo oluşturmuşsunuz demektir.
{ "TableDescription": { "TableName": "student", "KeySchema": [ { "AttributeName": "name", "KeyType": "HASH" }, { "AttributeName": "age", "KeyType": "RANGE" } ], "TableStatus": "CREATING", "TableSizeBytes": 0, "ItemCount": 0 } } -
Python kullanarak bağlanma
Python 2.6 veya daha yeni bir sürümü yüklüdür. Daha fazla bilgi için bkz. resmi Python web sitesi.
Boto3 yüklüdür. Daha fazla bilgi için bkz. Boto3 Yükleme.
Aşağıdaki kod Python kullanarak bir DynamoDB uyumlu örneğe nasıl bağlanılacağını ve Book adlı bir tablonun nasıl oluşturulacağını gösterir:
import boto3
def create_book_table(dynamodb=None):
if not dynamodb:
# Replace the endpoint_url with the actual endpoint of your DynamoDB-compatible instance.
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("Table status:", book_table.table_status)
Java kullanarak bağlanma
AWS SDK for Java gerekir. Daha fazla bilgi için bkz. AWS SDK for Java'yı Ayarlama.
Aşağıdaki kod Java kullanarak bir DynamoDB uyumlu örneğe nasıl bağlanılacağını ve Book adlı bir tablonun nasıl oluşturulacağını gösterir:
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 {
// Replace the endpoint and region with the actual values for your DynamoDB-compatible instance.
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), // partition key
new KeySchemaElement("year", KeyType.RANGE)), // sort key
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());
}
}
}
Diğer dillerde bağlantı örnekleri
Daha fazla örnek için bkz. DynamoDB ve AWS SDK'larına Giriş.