次の方法で共有


チュートリアル: テンプレートを使用して安全なワークスペースを作成する方法

テンプレートを使用すると、便利な方法で再現可能なサービスのデプロイを作成できます。 このテンプレートは、テンプレートを使用するときにユーザーが提供するいくつかの情報を使用して、何を作成するかを定義します。 たとえば、Azure Machine Learning ワークスペースの一意の名前を指定します。

このチュートリアルでは、Microsoft Bicep または Hashicorp Terraform テンプレートを使用して、Azure 仮想ネットワークとその背後でセキュリティ保護される以下の Azure リソースを作成する方法を学習します。

  • Azure Machine Learning ワークスペース
    • Azure Machine Learning コンピューティング インスタンス
    • Azure Machine Learning コンピューティング クラスター
  • Azure Storage アカウント
  • Azure Key Vault
  • Azure Application Insights
  • Azure Container Registry
  • Azure Bastion ホスト
  • Azure Machine Learning Data Science Virtual Machine (DSVM)

この Bicep テンプレートでは、Azure Kubernetes Service クラスターと、その AKS クラスター用の個別のリソース グループも作成されます。

ヒント

この記事の手順ではなく、Azure Machine Learning のマネージド仮想ネットワークを使用できます。 マネージド仮想ネットワークを使用すると、Azure Machine Learning はワークスペースとマネージド コンピューティングのネットワーク分離のジョブを処理します。 また、ワークスペースに必要なリソース (Azure Storage アカウントなど) のプライベート エンドポイントを追加することもできます。 詳しくは、ワークスペースのマネージド ネットワーク分離に関する記事をご覧ください。

Bicep または Terraform の情報を表示するには、以下のセクションで Bicep または Terraform のタブを選択してください。

前提条件

  • 無料版または有料版の Azure Machine Learning を使用する Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。

  • テンプレート リポジトリをクローンするための Git が開発環境にインストールされていること。 git コマンドがない場合は、https://git-scm.com/ から Git をインストールできます。

  • Azure CLI または Azure PowerShell コマンド ライン。

テンプレートの理解

Bicep テンプレートは、main.bicepmodules サブディレクトリ内のその他の *.bicep ファイルで構成されています。 次の表では、各ファイルの役割について説明します。

ファイル 説明
main.bicep modules サブディレクトリ内の他のモジュールにパラメーターと変数を渡します。
vnet.bicep Azure 仮想ネットワークとサブネットを定義します。
nsg.bicep 仮想ネットワークのネットワーク セキュリティ グループ ルールを定義します。
bastion.bicep Azure Bastion ホストとサブネットを定義します。 Azure Bastion を使用すると、Web ブラウザーを使用して、仮想ネットワーク内の仮想マシン (VM) に簡単にアクセスできます。
dsvmjumpbox.bicep DSVM を定義します。 Azure Bastion は、Web ブラウザーからこの VM にアクセスするために使用されます。
storage.bicep 既定のストレージとしてワークスペースで使用される Azure Storage アカウントを定義します。
keyvault.bicep ワークスペースで使用される Azure Key Vault を定義します。
containerregistry.bicep ワークスペースで使用される Azure Container Registry を定義します。
applicationinsights.bicep ワークスペースで使用される Azure Application Insights を定義します。
machinelearningnetworking.bicep ワークスペースのプライベート エンドポイントとドメイン ネーム システム (DNS) ゾーンを定義します。
machinelearning.bicep Azure Machine Learning ワークスペースを定義します。
machinelearningcompute.bicep Azure Machine Learning コンピューティング クラスターおよびコンピューティング インスタンスを定義します。
privateaks.bicep AKS クラスター インスタンスを定義します。

重要

各 Azure サービスには、独自の API バージョンのセットがあります。 サンプル テンプレートでは、Azure Machine Learning やその他のリソースに対して最新の API バージョンを使用していない場合があります。 使用の前に、最新の API バージョンを使用するようにテンプレートを変更する必要があります。

特定のサービスの API の詳細については、Azure REST API リファレンスのサービス情報を確認してください。 Azure Machine Learning の最新の API バージョンについては、「Azure Machine Learning REST API」を参照してください。

API バージョンを更新するには、該当リソースの種類の Microsoft.MachineLearningServices/<resource> エントリを見つけて、それを最新バージョンに更新します。

重要

このチュートリアルでは、DSVM と Azure Bastion は、セキュリティで保護されたワークスペースに接続するための簡単な方法です。 運用環境では、Azure VPN ゲートウェイまたは Azure ExpressRoute を使用して、オンプレミス ネットワークから仮想ネットワーク内のリソースに直接アクセスする方が適切です。

テンプレートを構成する

Bicep テンプレートをデプロイするには、自分が main.bicep ファイルが置かれている machine-learning-end-to-end-secure ディレクトリ内にいることを確認し、以下のコマンドを実行します。

  1. 新しい Azure リソース グループを作成するには、次のコマンド例を、<myrgname> はリソース グループ名に、<location> は使用したい Azure リージョンに置き換えて実行します。

    • Azure CLI:

      az group create --name <myrgname> --location <location>
      
    • Azure PowerShell:

      New-AzResourceGroup -Name <myrgname> -Location <location>
      
  2. テンプレートをデプロイするには、次のコマンドを、<myrgname> は作成したリソース グループの名前に、<pref> は必要なリソースを作成するときに使用する一意のプレフィックスに置き換えて使用します。 <mydsvmpassword> を DSVM ジャンプ ボックス サインイン アカウントの安全なパスワード (以下の例では azureadmin) に置き換えます。

    ヒント

    prefix は 5 文字以下である必要があり、すべて数字にしたり、次の文字を含めたりすることはできません: ~!@#$%^&*()=+_[]{}\|;:.'",<>/?

    • Azure CLI:

      az deployment group create \
          --resource-group <myrgname> \
          --template-file main.bicep \
          --parameters \
          prefix=<pref> \
          dsvmJumpboxUsername=azureadmin \
          dsvmJumpboxPassword=<mydsvmpassword>
      
    • Azure PowerShell:

      $dsvmPassword = ConvertTo-SecureString "<mydsvmpassword>" -AsPlainText -Force
      New-AzResourceGroupDeployment -ResourceGroupName <myrgname> `
          -TemplateFile ./main.bicep `
          -prefix "<pref>" `
          -dsvmJumpboxUsername "azureadmin" `
          -dsvmJumpboxPassword $dsvmPassword
      

      警告

      スクリプト内またはコマンド ラインではプレーンテキスト文字列の使用を避ける必要があります。 プレーンテキストは、イベント ログとコマンド履歴に表示できます。 詳細については、「ConvertTo-SecureString」を参照してください。

重要

DSVM とコンピューティング リソースの課金は 1 時間の実行ごとに行われます。 余分な料金を回避するには、使用されていないときはこれらのリソースを停止する必要があります。 詳細については、次の記事をご覧ください。

ワークスペースに接続する

デプロイが完了したら、以下の手順を使用して DSVM に接続します。

  1. Azure portal から、テンプレートで使用した Azure リソース グループを選択します。 次に、テンプレートによって作成された DSVM を選択します。 見つけられない場合は、[フィルター] セクションを使用して、[タイプ][仮想マシン] のフィルターを適用します。

    VM のフィルター処理と選択の様子のスクリーンショット。

  2. DSVM の [概要] ページで、[接続] を選択した後、ドロップダウン リストから [Bastion を介して接続] を選択します。

    Bastion を使用した接続の選択を示すスクリーンショット。

  3. 入力を求められたら、テンプレートの構成時に指定したユーザー名VM パスワードを入力した後、[接続] を選択します。

    重要

    DSVM デスクトップに初めて接続すると、PowerShell ウィンドウが開きスクリプトが実行されます。 スクリプトが完了してから、次の手順に進みます。

  4. DSVM デスクトップから、Microsoft Edge を起動し、アドレスとして https://ml.azure.com を入力します。 Azure サブスクリプションにサインインした後、テンプレートによって作成されたワークスペースを選択します。 ワークスペース用のスタジオが表示されます。

トラブルシューティング

以下のエラーは、DSVM ジャンプ ボックスの名前が 15 文字を超えているか、次のいずれかの文字を含んでいる場合に表示されます: ~!@#$%^&*()=+_[]{}\|;:.'",<>/?

エラー: Windows のコンピューター名は、15 文字を超えること、すべて数字にすること、次の文字を含めることはできません ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , <> / ?。

この Bicep テンプレートは、テンプレートに指定されたプレフィックス値を使用して、ジャンプ ボックス名をプログラムで生成します。 名前が 15 文字を超えたり、無効な文字を含んでいたりしないようにするには、5 文字以下のプレフィックスを使用し、次の文字は使用しないでください: ~!@#$%^&*()=+_[]{}\|;:.'",<>/?

引き続き Azure Machine Learning の概要を確認するには、「クイックスタート: Azure Machine Learning の概要」を参照してください。

セキュリティで保護されたワークスペースの一般的な構成と入出力要件の詳細については、Azure Machine Learning のセキュリティで保護されたワークスペースのトラフィック フローに関する記事を参照してください。