Functions前回から引き続きで、以下のイメージを実装したものを動かしてみるところからです。(図はこちらから引用)。Functionsの実装と、最後に載せてるクライアント側を想定したコンソールアプリクラスがあればいいだけなオチではあります。(v1.1.0)準備1:DocumentDBのインスタンス作成とコレクションの作成コンソールアプリで動作検証では、さっそく手抜き感溢れるConsoleアプリで動作確認します。このコードは、前回実装したResourceTokenDemoクラスに以下のコードを追加してしまいます。コンソールアプリで、このクラスをnewして、3行目のRunDemoAsyncメソッドをコールして動作確認です。76行目のGetResourceTokenAsyncメソッドでは、DocumentDBのURIとプライマリーキーを使ってトークンを取得します。service"の位置づけとなるサーバー側に実装するイメージです。6行目で、Col1コレクションのReadOnly権限のリソーストークン」を取得しています。8行目で「Col2コレクションのAll権限」のリソーストークンを取得しています。25行目のReadAndInsertDocumentsAsync()メソッドに1st引数は操作するコレクション、2nd引数は権限が付与されたリソーストークンを渡します。そのコレクションに対して、権限が付与されたリソーストークンを使ってDocumentDBの読み取りとデータ挿入を行います。いうことで、4通りの組み合わせで実行しました。「Col1」コレクションに対して、「Col1のReadOnly権限」でアクセス「Col1」コレクションに対して、「Col2のALL権限」でアクセス「Col2」コレクションに対して、「Col2のALL権限」でアクセス「Col2」コレクションに対して、「Col1のReadOnly権限」でアクセス実行結果は、想像通り権限が正しく適用された結果となりますね。今回Functionsへのアクセスには認証の実装をしていないのですが、本来はそれをしないと意味がない...(でも今回は実装しない)っていう前提で進めます。Appをコーディングします。Framework4.6ベースでコーディングです。Appの作成これはポチポチするだけなので、本家サイトのリンクをペタ。C#でHTTPトリガーのFunctionを作成します。docs.microsoft.com今回私のFunctionの名称は、デフォルトでつけられたHttpTriggerCSharp1という名称で進めています。ライブラリを読み込むMicrosoft.Azure.DocumentDBのライブラリをインポートします。エディターに移動」をクリックします。エディターが開いたら、「WWWROOT」のあたりにカーソルをあて、ファイルの追加をします。ファイル名は、「project.json」にする必要があります。「project.json」は、以下のように書きます。"1.11.4"」を追加してあげます。これで、ライブラリの読み込み設定が完了です。環境変数を設定DocumentDBのURIとアクセスキーを環境変数に入れてしまいましょう。Functionのブレードに戻ります。Appの設定」を開いて、「アプリケーション設定の構成」を開きます。「アプリ設定」に、キーと値を追加します。今回は以下のように設定しました。Portalでコードを直接書きます。permissionId)を受け取り、DocumentDBへアクセス→取得したリソーストークンをテキストで返すというコードです。テキストを指定しないとJsonで返そうとして、リソーストークンにダブルクォーテーションがついちゃうので、使い方に注意ですね。ポータルからテスト実行してみると、トークンが取れてることが確認できます。前回のコードのGetResourceTokenAsyncメソッドを変更し、FunctionsのURIとかHTTPのGetのURIを構築するメソッドを追加しました。コンソールアプリを実行してみると無事に想定通りの動作します♪。最後にごちゃごちゃとコードの追加追加をしてしまったので、ResourceTokenDemoクラスの最終形を...あと、struct...ついでにコンソールからの実行コードです。Functionsで実装したサンプルという話だったのです♪。試したことを長々と書いてしまいましたが、Functionsのコード書いてクライアント側からのアクセスを書くだけの方がシンプルにまとまりよかったなと...ちょっと後悔した今日この頃でした。当ブログに掲載されている情報は、必ずしも正確性や安全性を保証するものではありません。掲載された内容によって生じた損害等の一切の責任を負いかねます。当ブログに掲載されている情報は個人の見解であり、所属する団体・組織は一切関係ありません。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。