AWS AppSyncのID自動生成でUUIDの代わりにULIDを生成してみた

2022.01.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、ゲストブロガーのNTT東日本 大瀧です。 AWS AppSyncのユーティリティーヘルパーにULID(Universally unique Lexicographically Sortable Identifier)を自動生成する$util.autoUlid()が最近追加されたので、試してみた様子をレポートします。

ULIDとは

ULIDはUUIDと互換性のある、時系列でソート可能な識別子です。仕様と各言語の対応はGitHubで公開されています。

Pythonで操作する様子は、以下の記事がわかりやすいです。

タイムスタンプが含まれているので、例えばDynamoDBと連携するときにソートキーにすると捗りそうです。

試してみた

というわけで早速やってみましょう。DynamoDBテーブルのインポートから作成されるマッピングテンプレートではミューテーションでUUIDを自動生成する$util.autoId()を利用しているので、これを差し替えてみます。

編集前

{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
    "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
  },
  :(以下略)

編集後

{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
    "id": $util.dynamodb.toDynamoDBJson($util.autoUlid()),
  },
  :(以下略)

クエリエクスプローラでミューテーションを試してみると...

あっさり取れました!やったね!

まとめ

AWS AppSyncのID自動生成でUUIDの代わりにULIDの取得を試してみました。組み込みでかゆいところに対応できるのは嬉しいですね!

参考URL