Logic App と Cosmos DB

このエントリは2019/06/21現在の情報に基づきます。そのため、将来の機能追加・廃止に伴い、記載内容との乖離が発生する可能性があります。

関連エントリ

Serverlessというコンセプトに則ったサービスであるLogic Appは、複雑なロジックは向いていないながらも、シンプルなロジックであれば、コードをできるだけ書かずにFunctionsのような動作をさせることができる。今回はCosmos DBに対する操作を確認した。なお、データはAPI Managementのエントリで使っている3レターコードを格納したコレクションを使っている。

コネクタ

Azure Cosmos DBのコネクタが存在するが、アクションとしてのみ利用可能で、トリガーとして利用することはできない。変更フィードをLogic Appで取り扱うためには、現時点では以下のように、Cosmos DBとLogic Appの間mediationするものを挟む必要がある。

  • Functionsで受け取ってmediationするものを作成、もしくは連携する(Event GridやEvent Hubs、Service Busなど)
  • 変更フィードプロセッサライブラリを使ってmediationするものを作成、もしくは連携する(ただし.NETのみ)
  • Azure Cosmos DB SQL API SDK を使用してmediationするものを作成、もしくは連携する

クエリ

[1つのドキュメントを取得する]アクションを使う場合、[ドキュメントID]はダブルクォーテーションで囲まない点に注意が必要。対して、[パーティション キーの値]は、必ずダブルクォーテーションで囲む必要がある。

SFOを指定した場合、以下のような結果が返る(一部マスク済み)。当然ながら、この内容はCosmos DBのデータエクスプローラーで確認できる値と同じ(ただし_tsを除く)。

{
    "code": "SFO",
    "id": "SFO",
    "en": "San Francisco, CA",
    "ja": "サンフランシスコ",
    "_rid": "...",
    "_self": "dbs/.../",
    "_etag": "...",
    "_attachments": "attachments/",
    "_ts": 1561101814
}

もし複数件のレコードを取得する可能性がある場合、[複数のドキュメントにクエリを実行する]を使うとクエリを記載できる。

この場合、codeとしてTを指定すると、以下のように複数のレコードが返る。

[
    {
        "code": "CTS",
        "en": "Sapporo (Chitose)",
        "ja": "札幌(千歳)"
    },
    {
        "code": "TTJ",
        "en": "Tottori",
        "ja": "鳥取"
    },
    {
        "code": "AXT",
        "en": "Akita",
        "ja": "秋田"
    },
    {
        "code": "NTQ",
        "en": "Noto",
        "ja": "能登"
    },
    {
        "code": "TOY",
        "en": "Toyama",
        "ja": "富山"
    },
    {
        "code": "TAK",
        "en": "Takamatsu",
        "ja": "高松"
    },
    {
        "code": "OIT",
        "en": "Oita",
        "ja": "大分"
    },
    {
        "code": "TYO",
        "en": "Tokyo (All)",
        "ja": "東京(すべて)"
    },
    {
        "code": "ITM",
        "en": "Osaka (Itami)",
        "ja": "大阪(伊丹)"
    },
    {
        "code": "NRT",
        "en": "Tokyo (Narita)",
        "ja": "東京(成田)"
    },
    {
        "code": "TKS",
        "en": "Tokushima",
        "ja": "徳島"
    },
    {
        "code": "TSJ",
        "en": "Tsushima",
        "ja": "対馬"
    }
]

挿入・更新

挿入・更新時には、Upsertするか否かを指定できる(デフォルトでは出てこないので、[新しいパラメーターの追加]から選択する必要がある)。また、[パーティション キーの値]は、必ずダブルクォーテーションで囲むこと。

削除

これも[1つのドキュメントを取得する]アクションと同様、[ドキュメントID]はダブルクォーテーションで囲まない点に注意が必要。対して、[パーティション キーの値]は、必ずダブルクォーテーションで囲む必要がある。

まとめ

設定フィールドごとにダブルクォーテーションで囲む・囲まないの設定が必要なので、注意が必要である。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中