このエントリは2019/06/21現在の情報に基づきます。そのため、将来の機能追加・廃止に伴い、記載内容との乖離が発生する可能性があります。
関連エントリ
- Part 1: 基本
- Part 2: EDI/B2B
- Part 3: オンプレミスとの接続
- Part 4: Cosmos DBとの接続(このエントリ)
- Part 5: 長時間実行タスクの待機
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]はダブルクォーテーションで囲まない点に注意が必要。対して、[パーティション キーの値]は、必ずダブルクォーテーションで囲む必要がある。

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