はじめに
Amplify Mockingは便利でamplify mock api
と打つだけで以下のサービスがローカルで起動して利用できます。
- DynamoDB Loacl
- AppSync GraphQL API
Amplify Mockingで起動するDynamoDB Localに直接接続したい場合にどうすればいいのか調べました。
Amplify Mockingで起動するDynamoDB Localに直接接続する
結論からいうと、以下のようにすれば接続できます。
new DynamoDB({
endpoint: 'http://localhost:62224',
region: 'us-fake-1',
accessKeyId: 'fake',
secretAccessKey: 'fake',
});
endpoint
のURLはDynamoDB Localなので(ローカルで起動するので) http://localhost
です。ポート番号の62224
がデフォルトです(詳しくはこの後で説明します)。
region
, accessKeyId
, secretAccessKey
に指定する値は上記の値をそのまま指定してください。
amplify-appsync-simulatorのDynamoDBDataLoader や amplify-dynamodb-simulatorのindex.js にハードコーディングされているので、常にこの値にしておく必要があります。
DynamoDB Localのポート番号
DynamoDB Localのポート番号62224
はあくまでデフォルトです。もし、62224
が使えない場合には他の空いているポートを使います。
AppSync SimulatorはDynamoDB Localが実際に起動したポート番号を使って接続するように書かれているので問題ありませんが、外部から直接接続しようとした場合、そのポート番号がわからないので困ってしまいます。
実は、Amplify Mockingで起動するDynamoDB Localにオプションを渡す方法が存在します。
それは mock.json
というファイルを amplify
ディレクトリに作成しておくと、その内容をDynamoDB Localの起動オプションとしてくれるというものです。
本来は DynamoDB LocalにJAVA_OPTSを指定するために追加された機能 ですが、ポート番号も指定することができます。
例えば、次のように書いておけば、DynamoDB Localは 8888
番ポートで起動します(空いていないとエラーになります)。
{
"port": 8888
}
当然、以下のような指定も可能です(というか、こちらが本来の目的に沿った書き方です)。
{
"javaOpts": "-Xms512M -Xmx512M"
}
まとめ
- Amplify Mockingで起動するDynamoDB Localには以下のオプションで接続できる。
{
endpoint: 'http://localhost:62224',
region: 'us-fake-1',
accessKeyId: 'fake',
secretAccessKey: 'fake',
}
-
mock.json
で起動するポート番号を指定することもできる。