演習 - 環境変数を設定する

完了

環境変数を利用すると、コンテナーで実行するアプリケーションやスクリプトを動的に構成できます。 Azure CLI、PowerShell、または Azure portal を使用して、コンテナーを作成するときに変数を設定できます。 セキュリティで保護された環境変数を利用すると、機密情報をコンテナーの出力に表示しないようにできます。

Azure Cosmos DB インスタンスを作成し、環境変数を使用して接続情報を Azure コンテナー インスタンスに渡します。 コンテナー内のアプリケーションでは、変数を使用して Azure Cosmos DB のデータを読み書きします。 違いを確認できるように、環境変数とセキュリティで保護された環境変数の両方を作成します。

Azure Cosmos DB をデプロイする

  1. Azure Cosmos DB をデプロイするとき、一意のデータベース名を指定します。 学習目的に、Cloud Shell でこのコマンドを実行し、一意の名前を保持する Bash 変数を作成してください。

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. この az cosmosdb create コマンドを実行し、Azure Cosmos DB インスタンスを作成します。

    COSMOS_DB_ENDPOINT=$(az cosmosdb create \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query documentEndpoint \
      --output tsv)
    

    このコマンドが完了するまで数分かかることがあります。

    $COSMOS_DB_NAME によって一意のデータベース名が指定されます。 このコマンドによって、データベースのエンドポイント アドレスが出力されます。 ここで、コマンドによって、このアドレスが Bash 変数 COSMOS_DB_ENDPOINT に保存されます。

  3. az cosmosdb keys list を実行し、Azure Cosmos DB 接続キーを取得し、それを COSMOS_DB_MASTERKEY という名前の Bash 変数に保存します。

    COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query primaryMasterKey \
      --output tsv)
    

データベースと連動するコンテナーをデプロイする

Azure Cosmos DB インスタンスとの間でレコードを読み書きできる Azure コンテナー インスタンスを作成します。

最後の部分で作成した 2 つの環境変数、COSMOS_DB_ENDPOINTCOSMOS_DB_MASTERKEY は、Azure Cosmos DB インスタンスに接続するために必要な値を保持します。

  1. 次の az container create コマンドを実行してコンテナーを作成します。

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --image mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb \
      --ip-address Public \
      --location eastus \
      --environment-variables \
        COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \
        COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
    

    azuredocs/azure-vote-front:cosmosdb は、架空の投票アプリを実行するコンテナー イメージを参照します。

    --environment-variables 引数に注意してください。 この引数によって、コンテナーの起動時にコンテナーに渡される環境変数が指定されます。 その環境変数を探すようにコンテナー イメージは構成されています。 Azure Cosmos DB エンドポイントとその接続キーの名前を渡します。

  2. az container show コマンドを実行し、コンテナーのパブリック IP アドレスを取得します。

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query ipAddress.ip \
      --output tsv
    
  3. ブラウザーで、コンテナーの IP アドレスに移動します。

    重要

    コンテナーが完全に起動し、接続を受信できるようになるまで 1 分から 2 分かかる場合があります。 ブラウザー内で IP アドレスに移動しても応答がない場合は、しばらく待ってからページを更新します。

    アプリが利用可能になると、このページが表示されます。

    Screenshot that shows the Azure voting application with two choices in a browser. Cats and Dogs.

    猫または犬に投票してみてください。 各投票は Azure Cosmos DB インスタンスに格納されます。

セキュリティで保護された環境変数を使用し、接続情報を非表示にする

前のセクションでは、コンテナーを作成するのに 2 つの環境変数を使用しました。 既定では、これらの環境変数には Azure portal とコマンド ライン ツールからプレーン テキストでアクセスできます。

このセクションでは、接続キーなどの機密情報がプレーンテキストで表示されないようにする方法について学習します。

  1. 現在の動作を確認することから始めましょう。 次の az container show コマンドを実行し、コンテナーの環境変数を表示します。

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query containers[0].environmentVariables
    

    両方の値がプレーンテキストで出力されます。 次に例を示します。

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": "https://aci-cosmos.documents.azure.com:443/"
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": "abcdefghijklmnopqrztuvwxyz0123456789=="
      }
    ]
    

    これらの値は投票アプリケーションではユーザーに表示されませんが、接続キーなどの機密情報は、セキュリティ上習慣的にプレーン テキストでは格納しないことが大切です。

    セキュリティで保護された環境変数を使用するとクリア テキストで出力されなくなります。 セキュリティで保護された環境変数を使用するには、--environment-variables 引数ではなく --secure-environment-variables 引数を使用します。

  2. 次のコマンドを実行し、セキュリティで保護された環境変数を使用する aci-demo-secure という名前の 2 番目のコンテナーを作成します。

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-secure \
      --image mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb \
      --ip-address Public \
      --location eastus \
      --secure-environment-variables \
        COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \
        COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
    

    --secure-environment-variables 引数を使用することに注意してください。

  3. 次の az container show コマンドを実行し、コンテナーの環境変数を表示します。

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-secure \
      --query containers[0].environmentVariables
    

    今回は、環境変数がプレーンテキストで表示されないことがわかります。

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": null
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": null
      }
    ]
    

    実際のところ、環境変数の値はまったく表示されません。 それで問題ありません。これらの値は、秘匿性の高い情報を参照するためです。 ここでは、環境変数が存在することがわかれば十分です。