Chapter 09

Azure Portal で Azure Functions の環境を構築する

nikaera
nikaera
2020.11.08に更新

Azure Portal で Azure Funtions のデプロイ先を作成する

既に Azure アカウントは作成済み前提で進めていきます。まず Azure Portal のトップページにアクセスして、Azure Functions (関数アプリ) のページに遷移してから下記の作業します。

  1. 関数アプリの新規作成ページ から関数アプリを作成する
    1. 関数アプリの新規作成ページから関数アプリを作成する

  2. 関数アプリの作成が成功して、各種リソースがデプロイされたことを確認する
    2. 関数アプリの作成が成功して各種リソースがデプロイされたことを確認する

Azure Functions の環境をセットアップする

Azure Cosmos DB アカウントを作成した後、MONGODB_URI をシークレットとして Azure KeyVault に設定します。Azure KeyVault で設定した値を Azure Functinos (関数アプリ) に環境変数としてセットして利用可能にします。

Azure Cosmos DB アカウントを作成する

  1. Azure Cosmos DB アカウントの作成ページからアカウント作成する。API には MongoDB~ を選択する。
    1. Azure Cosmos DB アカウントの作成ページから Azure Cosmos DB アカウントを作成する。API には  を選択する

  2. 作成した Azure Cosmos DB アカウントのプライマリ接続文字列 (MongoDB URI) を取得して控えておく
    2. Azure Cosmos DB の MongoDB URI を取得して控えておく

プライマリ接続文字列を Azure KeyVault でシークレットに登録する

Azure Cosmos DB のプライマリ接続文字列はセキュアな情報なので Azure KeyVault (キーコンテナー) で管理します。

  1. キーコンテナーの作成ページからキーコンテナーを作成する
    1. キーコンテナーの作成ページからキーコンテナーを作成する

    1. で作成したキーコンテナーのシークレット登録画面に遷移する
      2. プライマリ文字列を登録するため、1. で作成したキーコンテナーのシークレット登録画面に遷移する
  2. 控えておいた Azure Cosmos DB のプライマリ文字列 (MongoDB URI) をシークレットに登録する
    3. 控えておいた Azure Cosmos DB のプライマリ文字列 (MongoDB URI) をシークレットに登録する

  3. 後に関数アプリで値を設定するため、登録したシークレットの識別子を控えておく
    4. 後に関数アプリで値を設定するため、登録したシークレットの識別子を控えておく

Azure Functions から Azure KeyVault が参照できるようにする

Azure Functions (関数アプリ) では、Azure KeyVault の値を環境変数の設定が可能です。公式ページの手順に沿って設定作業を進めていきます。

  1. 関数アプリのシステム割り当て済みの状態をオンにする
    1. 関数アプリのシステム割り当て済みの状態をオンにする

  2. キーコンテナーの一覧ページ から該当するキーコンテナーのアクセスポリシー追加画面に遷移する
    2. キーコンテナーの一覧ページから該当するキーコンテナーのアクセスポリシー追加画面に遷移する

  3. 該当する関数アプリにアクセスポリシーを設定する
    3. 該当する関数アプリにアクセスポリシーを設定する

アクセスポリシー設定時に 承認されているアプリケーション の設定項目がありますが、ここには何も設定しないでください。設定してしまうと関数アプリからキーコンテナーのシークレットが読み込めなくなるためです。

Azure KeyVault に登録した値を Azure Functions から参照する

  1. 該当する関数アプリのアプリケーション設定追加画面に遷移する
    1. 関数アプリのアプリケーション設定追加画面に遷移する

  2. 該当する関数アプリのアプリケーション設定にキーコンテナーのシークレットを追加する。
    キーコンテナーのシークレットをアプリケーション設定から追加する際、値のフォーマットは @Microsoft.KeyVault(SecretUri=<KeyVault で値を設定した時に取得可能なシークレット識別子>) になります。
    2. 関数アプリのアプリケーション設定に KeyVault のシークレットを追加する

  3. 該当する関数アプリのアプリケーション設定の変更内容を関数アプリに反映させる
    3. 該当する関数アプリのアプリケーション設定の変更内容を関数アプリに反映させる

Azure の環境構築も出来たので、いよいよ Azure Functions へデプロイしてみます。デプロイも CI で回せるようにします。