VM イメージの SAS URI を生成する
Note
共有アクセス署名 (SAS) URI を使用して、仮想マシン (VM) を発行できます。 または、Azure コンピューティング ギャラリーを使用してパートナー センターでイメージを共有することもできます。 詳細な手順については、「承認済みのベースを使用して仮想マシンを作成する」または「独自のイメージを使用して仮想マシンを作成する」を参照してください。
始める前に、以下を用意する必要があります。
- 仮想マシン
- 仮想ハード ドライブ (VHD) を格納するためのコンテナーを持つストレージ アカウント
- ストレージ アカウント キー
VM から VHD を抽出する
Note
ストレージ アカウントに既に VHD がアップロードされている場合は、この手順をスキップできます。
VM から VHD を抽出するには、VM ディスクのスナップショットを取得してから、そのスナップショットから VHD を抽出し、ご自身のストレージ アカウントに追加する必要があります。
VM ディスクのスナップショットを作成する
- Azure Portal にサインインします。
- [リソースの作成] を選択し、[スナップショット] を検索して選択します。
- [スナップショット] ブレードで、[作成] を選択します。
- [サブスクリプション] を選択します。 選択したサブスクリプション内の既存のリソース グループを選択するか、[新規作成] を選択して、作成する新しいリソース グループの名前を入力します。 これは、スナップショットが関連付けられるリソース グループです。
- スナップショットの [名前] を入力します。
- [ソースの種類] で、[ディスク] を選択します。
- [ソース サブスクリプション] (VM ディスクを含むサブスクリプション) を選択します。 これは、新しいスナップショットの宛先サブスクリプションとは異なる場合があります。
- [ソース ディスク] で、スナップショットを作成するマネージド ディスクを選びます。
- 高パフォーマンスの SSD に保存する必要がある場合を除き、[ストレージの種類] には [Standard HDD] を使用します。
- [確認および作成] を選択します。 検証が成功したら、[作成] を選択します。
VHD を抽出してストレージ アカウントに追加する
次のスクリプトを使用して、スナップショットをストレージ アカウント内の VHD にエクスポートします。 各パラメーターには、適宜実際の情報を挿入してください。
#Provide the subscription Id where the snapshot is created
subscriptionId=yourSubscriptionId
#Provide the name of your resource group where the snapshot is created
resourceGroupName=myResourceGroupName
#Provide the snapshot name
snapshotName=mySnapshot
#Provide Shared Access Signature (SAS) expiry duration in seconds (such as 3600)
#Know more about SAS here: https://learn.microsoft.com/azure/storage/storage-dotnet-shared-access-signature-part-1
sasExpiryDuration=3600
#Provide storage account name where you want to copy the underlying VHD file.
storageAccountName=mystorageaccountname
#Name of the storage container where the downloaded VHD will be stored.
storageContainerName=mystoragecontainername
#Provide the access key for the storage account that you want to copy the VHD to.
storageAccountKey=mystorageaccountkey
#Give a name to the destination VHD file to which the VHD will be copied.
destinationVHDFileName=myvhdfilename.vhd
az account set --subscription $subscriptionId
sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)
az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas
上記のスクリプトでは、次のコマンドを使用してスナップショットの SAS URI を生成し、その SAS URI を使用して基になる VHD をストレージ アカウントにコピーします。
コマンド | メモ |
---|---|
az ディスク アクセスの許可 | 基盤となる VHD ファイルをストレージ アカウントにコピーするか、オンプレミスにダウンロードするために使用される、読み取り専用の SAS を生成します。 |
az storage blob copy start | BLOB を、あるストレージ アカウントから別のストレージ アカウントに非同期的にコピーします。 az storage blob show を使用して、新しい BLOB の状態を確認します。 |
SAS URL を生成する
SAS アドレス (URI) の作成には、次の 2 つの一般的なツールが使用されます。
- Azure Storage browser – Azure portal で利用できます。
- Azure CLI – Windows 以外のオペレーティング システムや自動化または継続的インテグレーションの環境に推奨されます。
ツール 1 の使用: Azure Storage browser
- ご利用のストレージ アカウントに移動します。
- [ストレージ ブラウザー] を開き、[BLOB コンテナー] を選択します。
- [コンテナー] で VHD ファイルを右クリックし、[SAS の生成] を選択します。
- 表示される Shared Access Signature メニューで、次のフィールドに入力します。
- アクセス許可 – 読み取りアクセス許可を選択します。 書き込みまたは削除のアクセス許可を指定しないでください。
- 開始日/時刻 – VHD アクセスの許可開始日です。 UTC の時間変更から保護するために、現在の日付より 1 日前の日付を指定してください。 たとえば、現在の日付が 2022 年 7 月 15 日の場合は、日付を 2022 年 7 月 14 日に設定します。
- 有効期限日/時刻 – VHD アクセスのためのアクセス許可の有効期限。 現在の日付から 3 週間以上先の日付を指定します。
- この VHD に関連する SAS URI を作成するには、[SAS トークンおよび URL を生成] を選択します。
- BLOB SAS URL をコピーし、テキスト ファイルとして安全な場所に保存します。
- 公開する VHD ごとにこれらの手順を繰り返します。
Note
読み取りアクセス許可とリストアクセス許可の両方を持つ SAS URI を生成する必要がある場合は、コンテナー レベルで生成することで生成できます。 上記と同じ手順に従いますが、読み取りアクセス許可と一覧アクセス許可の両方を必ず選択してください。 手順 6 が完了したら、"?sp=rl" の前に BLOB ファイル名を追加して、コンテナー内の VHD ファイルを参照する必要があります。 たとえば、VHD ファイルが "mytestvhd.vhd" の場合、SAS URI は次のようになります。
<container-service-endpoint>/mytestvhd.vhd?<sas-connection-string>
ツール 2 の使用: Azure CLI
Azure CLI で、次のコマンドを実行します。
Azure CLICopy
Cloud Shell を開き、次のコマンドを実行します。
az storage container generate-sas --connection-string 'DefaultEndpointsProtocol=https;AccountName=\<account-name\>;AccountKey=\<account-key\>;EndpointSuffix=core.windows.net' --name \<container-name\> --permissions r --start '\<start-date\>' --expiry '\<expiry-date\>'
上記のコマンドを実行する前に、次のパラメーター値を必ず挿入してください。
パラメーター値 説明 account-name ご利用の Azure ストレージ アカウント名。 account-key ご利用の Azure ストレージ アカウント キー。 コンテナー名 VHD ファイルをホストする BLOB コンテナー。 start-date これは、VHD アクセスの許可開始日です。 現在の日付の 1 日前の日付を指定します。 たとえば、現在の日付が 2022 年 7 月 15 日の場合は、日付を 2022 年 7 月 14 日に設定します。 UTC の日付/時刻形式 (YYYY-MM-DDT00:00:00Z) で日付を指定します (2022-04-01T00:00:00Z など)。 expiry-date VHD アクセスのためのアクセス許可の有効期限。 現在の日付から 3 週間以上先の日付を指定します。 UTC の日付/時刻形式 (YYYY-MM-DDT00:00:00Z) で日付を指定します (2022-04-01T00:00:00Z など)。 SAS 接続文字列をコピーし、テキスト ファイルとして安全な場所に保存します。 この文字列を編集して、最終的な SAS URI を作成するために VHD の場所情報を追加します。
Azure portal で、新しい URI に関連付けられている VHD が含まれている BLOB コンテナーにアクセスします。
BLOB サービス エンドポイントの URL をコピーします。
手順 2 で得た SAS 接続文字列でテキスト ファイルを編集します。 次の形式を使用して、完全な SAS URI を作成します。 エンドポイント URL と接続文字列の間に必ず "?" を挿入してください。
<blob-service-endpoint-url>?<sas-connection-string>
仮想マシンの SAS のエラー メッセージ
次の表は、パートナー センターで共有アクセス署名 (SAS) URI を指定するときに発生する一般的なエラーと、推奨される解決策を示しています。
問題点 | 失敗メッセージ | 固定 |
---|---|---|
SAS URI に "?" が見つからない | Must be a valid Azure shared access signature URI. |
指定された SAS URI で適切な構文が使用され、"?" が含まれていることを確認します。文字。 構文: <blob-service-endpoint-url>?<sas-connection-string> |
"st" パラメーターが SAS URI にない | Specified SAS URL cannot be reached. |
適切な開始日 ("st") の値を使用して SAS URI を更新します。 |
"se" パラメーターが SAS URI にない | The end date parameter (se) is required. |
適切な End Date ("se") 値で SAS URI を更新します。 |
"sp=r" が SAS URI にない | Missing Permissions (sp) must include 'read' (r). |
アクセス許可を Read ("sp=r") に設定して SAS URI を更新します。 |
SAS URI の承認エラー | Failure: Copying Images. Not able to download blob due to authorization error. |
SAS URI の形式を確認して修正します。 必要に応じて再生成します。 |
SAS URI の "st" および "se" パラメーターで完全な日付と時刻が指定されていない | The start time parameter (st) is not a valid date string. OR The end date parameter (se) is not a valid date string. |
SAS URI Start Date および End Date パラメーター ("st" および "se" substrings) には、11-02-2017T00:00:00Z などの完全な日時形式 (YYYY-MM-DDT00:00:00Z) が必要です。 短縮バージョンは無効です (Azure CLI の一部のコマンドでは、既定で短縮値が生成される場合があります)。 |
詳細については、「Shared Access Signatures (SAS) を使って Azure Storage リソースへの制限付きアクセスを許可する」を参照してください。
SAS URI の検証
要求を送信した後に SAS URI に関連した問題が発生しないようにするために、パートナー センターで発行する前に SAS URI を確認します。 このプロセスは省略可能ですが、実行することをお勧めします。
- URI には、VHD イメージのファイル名 (ファイル名拡張子
.vhd
を含む) が含まれています。 Sp=r
が URI の中間付近に出現します。 この文字列は、読み取りアクセス許可が付与されていることを示します。sr=c
が出現する場合は、コンテナーレベルのアクセスが指定されていることを意味します。- URI をコピーしてブラウザーに貼り付け、BLOB のテストダウンロードを行うことができます (ダウンロードが完了する前に操作を取り消すことができます)。