LoginSignup
6
3

More than 3 years have passed since last update.

amplify mock apiで起動するDynamoDB Localにオプションを渡す

Posted at

はじめに

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のDynamoDBDataLoaderamplify-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番ポートで起動します(空いていないとエラーになります)。

amplify/mock.json
{
  "port": 8888
}

当然、以下のような指定も可能です(というか、こちらが本来の目的に沿った書き方です)。

{
  "javaOpts": "-Xms512M -Xmx512M"
}

まとめ

  • Amplify Mockingで起動するDynamoDB Localには以下のオプションで接続できる。
{
  endpoint: 'http://localhost:62224',
  region: 'us-fake-1',
  accessKeyId: 'fake',
  secretAccessKey: 'fake',
}
  • mock.jsonで起動するポート番号を指定することもできる。
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3