このトピックでは、AWS Command Line Interface (AWS CLI) と、Python や Java などのプログラミング言語用 SDK を使用して、DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続する方法について説明します。
前提条件
[DynamoDB] プロトコルと互換性のある ApsaraDB for MongoDB インスタンスが作成されていること。 ApsaraDB for MongoDB インスタンスの作成方法の詳細については、「シャードクラスターインスタンスを作成する」をご参照ください。
準備
DynamoDB 互換 ApsaraDB for MongoDB インスタンスの接続文字列を取得します。
[ApsaraDB for MongoDB コンソール] にログインします。
表示されるページの左上隅で、インスタンスが属するリソースグループとリージョンを選択します。
左側のナビゲーションウィンドウで、[シャードクラスターインスタンス] をクリックします。
目的のインスタンスを見つけ、インスタンス ID をクリックします。
インスタンス詳細ページの左側のナビゲーションウィンドウで、[データベース接続] をクリックします。
[内部接続 - VPC] セクションで、インスタンスの接続文字列を表示します。

アプリケーションが Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、ネットワーク接続を確保するために、シャードクラスターインスタンスと ECS インスタンスが以下の要件を満たしていることを確認してください。
シャードクラスターインスタンスと ECS インスタンスが同じリージョンに属していること。 ECS インスタンスのリージョンを表示できます。 詳細については、「インスタンス情報を表示する」をご参照ください。
オプション: シャードクラスターインスタンスと ECS インスタンスが同じゾーンに属していること。 これにより、ネットワーク遅延が軽減されます。 ECS インスタンスのゾーンを表示できます。 詳細については、「インスタンス情報を表示する」をご参照ください。
シャードクラスターインスタンスと ECS インスタンスのネットワークタイプが同じであること。 ECS インスタンスのネットワークタイプを表示できます。 詳細については、「インスタンス情報を表示する」をご参照ください。 ECS インスタンスが[クラシックネットワーク] に存在する場合は、ECS インスタンスを[クラシックネットワーク] から[仮想プライベートクラウド (VPC)] に移行できます。 詳細については、「ECS インスタンスをクラシックネットワークから VPC に移行する」をご参照ください。
AWS CLI を使用してインスタンスに接続する
このセクションでは、AWS CLI を使用して DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続する方法について説明します。 この例では、Ubuntu 16.04.6 LTS を使用しています。 AWS CLI の詳細については、「AWS Command Line Interface とは」をご参照ください。
AWS CLI クライアントをインストールします。
次のコマンドを実行して、最新バージョンの AWS CLI のインストールパッケージを取得し、パッケージの名前を
awscliv2.zipに変更します。curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"次のコマンドを実行して、
awscliv2.zipファイルを解凍します。unzip awscliv2.zip説明unzipユーティリティをインストールしていない場合は、sudo apt install unzipコマンドを実行して unzip ユーティリティをインストールします。 その後、上記のコマンドを実行して awscliv2.zip パッケージを解凍します。次のコマンドを実行して、AWS CLI クライアントをインストールします。
sudo ./aws/install
You can now run: /usr/local/bin/aws --versionプロンプトが表示されたら、AWS CLI クライアントがインストールされています。/usr/local/bin/aws --versionコマンドを実行して、AWS CLI のバージョン番号を照会できます。/usr/local/bin/aws configureコマンドを実行して AWS CLI を構成し、次の表に示すパラメータを構成します。 パラメータを構成した後、Enter キーを押します。パラメータ
説明
例
AWS Access Key IDAWS アカウントのアクセスキー ID。 アクセスキー ID がない場合は、ランダムな文字を入力します。
XXXXXXXXXXAWS Secret Access KeyAWS アカウントのシークレットアクセスキー。 シークレットアクセスキーがない場合は、ランダムな文字を入力します。
XXXXXXXXXXDefault region nameAWS DynamoDB データベースが存在するリージョン。 リージョンがない場合は、例に示すリージョンを入力します。
us-west-2Default output formatデフォルトの出力フォーマット。 このパラメータは空のままにすることができます。
json説明AWS CLI の構成の詳細については、「AWS CLI の構成」をご参照ください。
次のコマンドを実行して、DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続し、コレクションを作成します。
aws dynamodb --endpoint-url <Connection string of the DynamoDB-compatible ApsaraDB for MongoDB instance> \ create-table --table-name <Name of the collection that you want to create> \ --attribute-definitions AttributeName=<Attribute name>,AttributeType=<Data type of the attribute> \ --key-schema AttributeName=<Attribute name of the primary key>,KeyType=<Role of the primary key> \ --provisioned-throughput ReadCapacityUnits=<Provisioned read throughput>,WriteCapacityUnits=<Provisioned write throughput>パラメータ
説明
--endpoint-urlDynamoDB 互換 ApsaraDB for MongoDB インスタンスの接続文字列。 接続文字列は
HTTP://で始まる必要があります。create-tableコレクションを作成するために使用されるコマンド。
説明詳細については、「create-table」をご参照ください。
--table-name作成するコレクションの名前。
--attribute-definitionsコレクションまたはインデックスのキースキーマを記述する属性の配列。 このパラメータは、次のオプションで構成されます。
AttributeName: 属性の名前。AttributeType: 属性のデータ型。説明詳細については、「create-table」をご参照ください。
--key-schemaコレクションまたはインデックスのプライマリキー属性。 このパラメータは、次のオプションで構成されます。
AttributeName:--attribute-definitionsパラメータを使用して作成されたプライマリキー属性の名前。KeyType: プライマリキーのロール。説明詳細については、「create-table」をご参照ください。
--provisioned-throughputコレクションまたはインデックスのプロビジョニングスループット。 このパラメータは、次のオプションで構成されます。
ReadCapacityUnits: プロビジョニングされた読み取りスループット。WriteCapacityUnits: プロビジョニングされた書き込みスループット。
説明詳細については、「create-table」をご参照ください。
サンプルコード:
/usr/local/bin/aws dynamodb --endpoint-url http://dds-xxxx.mongodb.rds.aliyuncs.com:3717 # DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続するために使用される接続文字列を指定します。 \ create-table --table-name student # student という名前のコレクションを作成します。 \ --attribute-definitions AttributeName=name,AttributeType=S AttributeName=age,AttributeType=N # コレクションに STRING 型の name 属性と NUMBER 型の age 属性を指定します。 \ --key-schema AttributeName=name,KeyType=HASH AttributeName=age,KeyType=RANGE # name 属性をパーティションキーとして、age 属性をソートキーとして指定します。 \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 # プロビジョニングされた読み取りスループットと書き込みスループットを 5 に設定します。次のコンテンツが表示された場合は、DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続され、コレクションが作成されています。
{ "TableDescription": { "TableName": "student", "KeySchema": [ { "AttributeName": "name", "KeyType": "HASH" }, { "AttributeName": "age", "KeyType": "RANGE" } ], "TableStatus": "CREATING", "TableSizeBytes": 0, "ItemCount": 0 } }
Python を使用してインスタンスに接続する
Python 2.6 以降がインストールされていること。 詳細については、Python の公式 Web サイトをご覧ください。
Boto3 がインストールされていること。 詳細については、「Boto3 ドキュメント」をご参照ください。
次のサンプルコードは、SDK for Python を使用して DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続し、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 2.x のセットアップ」をご参照ください。
次のサンプルコードは、SDK for Java を使用して DynamoDB 互換 ApsaraDB for MongoDB インスタンスに接続し、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), // 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());
}
}
}他のプログラミング言語用 SDK を使用してインスタンスに接続する
詳細については、「DynamoDB と AWS SDK の使用開始」をご参照ください。