Azure Stack Hub での Python による API バージョンのプロファイルの使用
重要
Python SDK は、トラック 1 からトラック 2 に更新されました。 できるだけ早くトラック 2 SDK に移行することをお勧めします。 手順については、 こちらの移行ガイドを参照してください。
Python SDK では、Azure Stack Hub やグローバル Azure などの異なるクラウド プラットフォームをターゲットとする API バージョン プロファイルをサポートします。 ハイブリッド クラウド向けのソリューションの作成時に API プロファイルを使用します。
この記事の手順では、Microsoft Azure サブスクリプションが必要です。 お持ちでない場合は、無料試用版アカウントを入手できます。
Python と API バージョン プロファイル
Python SDK では、以下の API プロファイルをサポートします。
latest
このプロファイルでは、Azure プラットフォーム内にある全サービス プロバイダー向けの最新の API バージョンをターゲットにします。2020_09_01_hybrid
このプロファイルでは、バージョン 2102 以降の Azure Stack Hub プラットフォーム内にある全リソース プロバイダー向けの最新の API バージョンをターゲットにします。2019_03_01_hybrid
このプロファイルでは、バージョン 1904 以降の Azure Stack Hub プラットフォーム内にある全リソース プロバイダー向けの最新の API バージョンをターゲットにします。API プロファイルと Azure Stack Hub の詳細については、「Azure Stack Hub での API バージョンのプロファイルの管理」を参照してください。
Azure Python SDK をインストールする
Profiles
日付を含むプロファイルの場合、別の SDK プロファイルまたはバージョンを使用するには、v<date>_hybrid
内の日付を置き換えます。 たとえば、2008 バージョンの場合、プロファイルは 2019_03_01
で、文字列は v2019_03_01_hybrid
になります。 SDK チームによってパッケージの名前が変更されることがあるため、文字列の日付を別の日付に置き換えるだけでは機能しない場合があることに注意してください。 プロファイルと Azure Stack バージョンの関連付けについては、次の表を参照してください。
Azure Stack バージョン | プロファイル |
---|---|
2311 | 2020_09_01 |
2301 | 2020_09_01 |
2206 | 2020_09_01 |
2108 | 2020_09_01 |
2102 | 2020_09_01 |
2008 | 2019_03_01 |
Azure Stack Hub および API プロファイルについて詳しくは、「API プロファイルの概要」をご覧ください。
Python SDK プロファイルに関する記事を参照してください。
サブスクリプション
サブスクリプションをまだ用意していない場合は、サブスクリプションを作成し、後で使用できるようにサブスクリプション ID を保存します。 サブスクリプションの作成方法の詳細については、こちらのドキュメントを参照してください。
サービス プリンシパル
サービス プリンシパルとそれに関連付けられている環境情報を作成し、どこかに保存する必要があります。
owner
ロールを持つサービス プリンシパルの使用をお勧めしますが、サンプルによっては contributor
ロールで十分な場合もあります。 必要な値については、サンプル リポジトリの README を参照してください。 これらの値は、JSON ファイル (このサンプルで使っているもの) など、SDK 言語がサポートする任意の形式で読み取ることができます。 実行するサンプルによっては、これらの値のすべてが使われるわけではありません。 更新されたサンプル コードや詳細情報については、サンプル リポジトリを参照してください。
テナント ID
Azure Stack Hub のディレクトリまたはテナント ID を確認するには、この記事の手順に従ってください。
リソース プロバイダーを登録する
こちらのドキュメントに従って、必要なリソース プロバイダーを登録してください。 実行するサンプルに応じて、これらのリソース プロバイダーが必要になります。 たとえば、VM サンプルを実行する場合は、Microsoft.Compute
リソース プロバイダーの登録が必要です。
Azure Stack Resource Manager エンドポイント
Azure Resource Manager (ARM) は、管理者が Azure リソースのデプロイ、管理、監視を行えるようにするための管理フレームワークです。 Azure Resource Manager では、これらのタスクを個別に処理するのではなく、グループとして単一の操作で処理することができます。 Resource Manager エンドポイントからメタデータ情報を取得できます。 エンドポイントは、コードを実行するために必要な情報と共に、JSON ファイルを返します。
- Azure Stack Development Kit (ASDK) の ResourceManagerEndpointUrl は
https://management.local.azurestack.external/
です。 - 統合システムの ResourceManagerEndpointUrl は
https://management.region.<fqdn>/
です。ここで、<fqdn>
は完全修飾ドメイン名です。 - 必要なメタデータを取得するには、
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
になります。 利用可能な API バージョンについては、Azure REST API の仕様を参照してください。 たとえば、プロファイル バージョン2020-09-01
では、api-version
を、リソース プロバイダー2019-10-01
用のmicrosoft.resources
に変更することができます。
サンプル JSON:
{
"galleryEndpoint": "https://portal.local.azurestack.external:30015/",
"graphEndpoint": "https://graph.windows.net/",
"portal Endpoint": "https://portal.local.azurestack.external/",
"authentication":
{
"loginEndpoint": "https://login.windows.net/",
"audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
}
}
Azure Stack Hub の CA ルート証明書を信頼する
ASDK を使用する場合は、リモート マシン上で CA ルート証明書を明示的に信頼する必要があります。 Azure Stack Hub 統合システムで CA ルート証明書を信頼する必要はありません。
Windows
お使いのマシン上で Python 証明書ストアの場所を探します。 この場所は、Python をインストールした場所に応じて異なる場合があります。 コマンド プロンプトまたは管理者特権の PowerShell プロンプトを開き、次のコマンドを入力します。
python -c "import certifi; print(certifi.where())"
証明書ストアの場所をメモします (例: ~/lib/python3.5/site-packages/certifi/cacert.pem)。 このパスは、オペレーティング システムと、インストールされている Python のバージョンによって異なります。
Azure Stack Hub の CA ルート証明書を Python の既存の証明書に追加して信頼します。
$pemFile = "<Fully qualified path to the PEM certificate; for ex: C:\Users\user1\Downloads\root.pem>" $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $root.Import($pemFile) Write-Host "Extracting required information from the cert file" $md5Hash = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower() $sha1Hash = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower() $sha256Hash = (Get-FileHash -Path $pemFile -Algorithm SHA256).Hash.ToLower() $issuerEntry = [string]::Format("# Issuer: {0}", $root.Issuer) $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject) $labelEntry = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1]) $serialEntry = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower()) $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash) $sha1Entry = [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash) $sha256Entry = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash) $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n") $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + ` $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText Write-Host "Adding the certificate content to Python Cert store" Add-Content "${env:ProgramFiles(x86)}\Python35\Lib\site-packages\certifi\cacert.pem" $rootCertEntry Write-Host "Python Cert store was updated to allow the Azure Stack Hub CA root certificate"
Note
Python SDK での開発に virtualenv を使っている場合、以前の証明書を仮想環境の証明書ストアに追加する必要があります。 パスは、..\mytestenv\Lib\site-packages\certifi\cacert.pem
のようになります。
サンプル
最新の (トラック 2) サンプル コードについては、 このサンプル リポジトリ を参照してください。 トラック 1 のサンプル コードについては、こちらのサンプル リポジトリ を参照してください。 ルート README.md
には一般的な要件が記述されており、各サブディレクトリには、そのサンプルを実行する方法を説明する独自 README.md
のサンプルが含まれています。
Azure Stack バージョン 2008
またはプロファイル 2019-03-01
以前に適用できるサンプルについては、こちらを参照してください。