VM 애플리케이션 개요

VM 애플리케이션은 가상 머신에 대한 애플리케이션의 관리, 공유 및 전역 배포를 간소화하는 Azure Compute Gallery(이전의 Shared Image Gallery)의 리소스 종류입니다.

앱이 사전 설치된 VM 이미지를 만들 수 있지만 애플리케이션이 변경될 때마다 이미지를 업데이트해야 합니다. VM 이미지에서 애플리케이션 설치를 분리하면 변경의 모든 코드 줄에 대해 새 이미지를 게시할 필요가 없습니다.

애플리케이션 패키지는 다른 배포 및 패키지 방법에 비해 이점을 제공합니다.

  • VM 애플리케이션은 Azure 정책을 지원합니다.

  • 패키지 그룹화 및 버전 관리

  • VM 애플리케이션은 인프라에 더 가깝게 전역적으로 복제될 수 있으므로 AzCopy 또는 기타 스토리지 복사 메커니즘을 사용하여 Azure 지역에서 비트를 복사할 필요가 없습니다.

  • Azure RBAC(역할 기반 액세스 제어)를 통해 다른 사용자와 공유

  • 가상 머신 및 유연하고 균일한 확장 집합에 대한 지원

  • VM 또는 확장 집합에 NSG(네트워크 보안 그룹) 규칙이 적용된 경우 인터넷 리포지토리에서 패키지를 다운로드하지 못할 수 있습니다. 스토리지 계정을 사용하는 경우 잠긴 VM에 패키지를 다운로드하려면 프라이빗 링크를 설정해야 합니다.

  • 블록 Blob 지원: 이 기능을 사용하면 큰 파일을 더 작고 관리하기 쉬운 블록으로 분리하여 효율적으로 처리할 수 있습니다. 대량의 데이터, 스트리밍 및 백그라운드 업로드를 업로드하는 데 적합합니다.

VM 앱 패키지란?

VM 애플리케이션 패키지는 여러 리소스 종류를 사용합니다.

리소스 설명
Azure Compute Gallery 갤러리는 애플리케이션 패키지를 관리하고 공유하기 위한 리포지토리입니다. 사용자는 갤러리 리소스를 공유할 수 있으며 모든 자식 리소스가 자동으로 공유됩니다. 갤러리 이름은 구독당 고유해야 합니다. 예를 들어 모든 OS 이미지를 저장할 하나의 갤러리와 모든 VM 애플리케이션을 저장할 다른 갤러리가 있을 수 있습니다.
VM 애플리케이션 VM 애플리케이션의 정의입니다. 모든 버전에 대한 공통 메타데이터를 저장하는 논리 리소스입니다. 예를 들어 Apache Tomcat에 대한 애플리케이션 정의가 있고 그 안에 여러 버전이 있을 수 있습니다.
VM 애플리케이션 버전 배포 가능한 리소스입니다. VM 애플리케이션 버전을 VM 인프라에 가까운 대상 지역에 전역적으로 복제할 수 있습니다. VM 애플리케이션 버전은 해당 지역의 VM에 배포되기 전에 지역에 복제해야 합니다.

제한 사항

  • 지역당 3개 이하의 복제본: VM 애플리케이션 버전을 만들 때 지역당 최대 복제본 수는 3개입니다.

  • 읽기 권한과 함께 공용 액세스 또는 SAS URI가 있는 스토리지: 다른 제한 수준이 배포에 실패하기 때문에 스토리지 계정에 공용 수준 액세스 권한이 있거나 읽기 권한이 있는 SAS URI를 사용해야 합니다.

  • 실패한 설치 다시 시도: 현재 실패한 설치를 다시 시도하는 유일한 방법은 프로필에서 애플리케이션을 제거한 후에 다시 추가하는 것입니다.

  • VM당 25개의 애플리케이션만: 언제든지 VM에 25개 이하의 애플리케이션을 배포할 수 있습니다.

  • 2GB 애플리케이션 크기: 애플리케이션 버전의 최대 파일 크기는 2GB입니다.

  • 스크립트에서 다시 부팅을 보장하지 않음: 스크립트를 다시 부팅해야 하는 경우 배포 중에 해당 애플리케이션을 마지막으로 배치하는 것이 좋습니다. 코드가 다시 부팅을 처리하려고 시도하는 동안 실패할 수 있습니다.

  • VM 에이전트 필요: VM에 VM 에이전트가 있어야 하며 목표 상태를 받을 수 있어야 합니다.

  • 동일한 VM에 동일한 애플리케이션 여러 버전: VM에는 동일한 애플리케이션의 여러 버전이 있을 수 없습니다.

  • 현재 지원되지 않는 이동 작업: VM 앱이 있는 VM을 다른 리소스 그룹으로 이동하는 작업은 현재 지원되지 않습니다.

참고 항목

Azure Compute Gallery 및 VM 애플리케이션의 경우 복제 후 스토리지 SAS를 삭제할 수 있습니다.

비용

VM 애플리케이션 패키지 사용에 대한 추가 요금은 없지만 다음 리소스에 대한 요금이 부과됩니다.

  • 각 패키지와 모든 복제본을 저장하는 데 드는 스토리지 비용입니다.
  • 이미지 버전을 원본 지역에서 복제된 지역으로 처음 복제할 때 발생하는 네트워크 송신 요금. 후속 복제본은 지역 내에서 처리되므로 추가 비용이 없습니다.

네트워크 송신에 대한 자세한 내용은 대역폭 가격 책정을 참조하세요.

VM 애플리케이션

VM 애플리케이션 리소스는 VM 애플리케이션에 대해 다음을 정의합니다.

  • VM 애플리케이션이 저장된 Azure Compute Gallery
  • 애플리케이션의 이름입니다.
  • Linux 또는 Windows 등의 지원되는 OS 유형
  • VM 애플리케이션에 대한 설명

VM 애플리케이션 버전

VM 애플리케이션 버전은 배포 가능한 리소스입니다. 버전은 다음 속성으로 정의됩니다.

  • 버전 번호
  • 스토리지 계정의 애플리케이션 패키지 파일에 대한 링크
  • 애플리케이션 설치를 위한 문자열 설치
  • 앱을 제대로 제거하는 방법을 보여 줄 문자열 제거
  • VM에 다운로드할 때 사용할 패키지 파일 이름
  • VM에서 앱을 구성하는 데 사용할 구성 파일 이름
  • 라이선스 파일을 포함할 수 있는 VM 애플리케이션의 구성 파일에 대한 링크
  • VM 애플리케이션을 최신 버전으로 업데이트하는 방법에 대한 문자열 업데이트
  • 수명 종료 날짜 수명 종료 날짜는 정보 제공용입니다. 수명 종료 날짜가 지난 후에도 VM 애플리케이션 버전을 계속 배포할 수 있습니다.
  • 최신 항목에서 제외. 애플리케이션의 최신 버전으로 사용 중인 버전을 유지할 수 있습니다.
  • 복제 대상 지역
  • 지역당 복제본 수

디렉터리 다운로드

애플리케이션 패키지 및 구성 파일의 다운로드 위치는 다음과 같습니다.

  • Linux: /var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>
  • Windows: C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>

설치/업데이트/제거 명령은 애플리케이션 패키지와 구성 파일이 현재 디렉터리에 있다고 가정하여 작성해야 합니다.

파일 이름 지정

애플리케이션 파일이 VM에 다운로드되면 이름이 “MyVmApp”(확장명 없음)으로 변경됩니다. 이는 VM이 패키지의 원래 이름 또는 확장을 인식하지 못하기 때문입니다. “MyVmApp”이라는 애플리케이션 이름 자체에 있는 유일한 이름을 활용합니다.

이 문제를 탐색하는 몇 가지 다른 방법은 다음과 같습니다.

실행하기 전에 파일 이름을 바꾸는 명령을 포함하도록 스크립트를 수정할 수 있습니다.

move .\\MyVmApp .\\MyApp.exe & MyApp.exe /S

packageFileName(및 해당하는 configFileName) 속성을 사용하여 파일 이름을 바꿀 내용을 알려줄 수도 있습니다. 예를 들어 이를 “MyApp.exe”로 설정하는 경우 설치 스크립트만 다음과 같이 지정해야 합니다.

MyAppe.exe /S

Blob의 원래 이름이 "myapp"이 아닌 "myApp.exe"인 경우 packageFileName 속성을 설정하지 않아도 위의 스크립트가 작동했을 것입니다.

명령 인터프리터

기본 명령 인터프리터는 다음과 같습니다.

  • Linux: /bin/bash
  • Windows: cmd.exe

Chocolatey 또는 PowerShell과 같은 다른 인터프리터가 컴퓨터에 설치되어 있는 한 실행 파일을 호출하고 명령을 전달하여 이러한 인터프리터를 사용할 수 있습니다. 예를 들어 cmd 대신 Windows PowerShell에서 명령을 실행하려면 powershell.exe -Command '<powershell commmand>'를 전달하면 됩니다.

업데이트 처리 방법

VM 또는 Virtual Machine Scale Sets에서 애플리케이션 버전을 업데이트하는 경우 배포 중에 제공한 업데이트 명령이 사용됩니다. 업데이트된 버전에 업데이트 명령이 없는 경우 현재 버전이 제거되고 새 버전이 설치됩니다.

업데이트 명령은 이전 버전의 VM 애플리케이션에서 업데이트될 수 있다는 가정에 따라 작성해야 합니다.

Linux에서 VM 애플리케이션을 만들기 위한 팁

Linux용 타사 애플리케이션은 몇 가지 방법으로 패키지할 수 있습니다. 가장 일반적인 몇 가지 설치 명령 만들기를 처리하는 방법을 살펴보겠습니다.

.tar 및 .gz 파일

이러한 파일은 압축된 보관 파일이며 원하는 위치로 추출할 수 있습니다. 특정 위치로 추출해야 하는 경우 원본 패키지에 대한 설치 지침을 확인합니다. .tar.gz 파일에 소스 코드가 포함된 경우 패키지 지침에서 소스에서 설치하는 방법을 참조하세요.

Linux 컴퓨터에 golang을 설치하는 설치 명령의 예:

sudo tar -C /usr/local -xzf go_linux

제거 명령 예제:

sudo rm -rf /usr/local/go

.deb, .rpm 및 인터넷 액세스가 제한된 VM용 기타 플랫폼별 패키지를 사용하여 애플리케이션 패키지 만들기

플랫폼별 패키지 관리자용 개별 패키지를 다운로드할 수 있지만 일반적으로 모든 종속성이 포함되어 있지는 않습니다. 이러한 파일의 경우 애플리케이션 패키지에 모든 종속성을 포함하거나 시스템 패키지 관리자가 VM에서 사용 가능한 리포지토리를 통해 종속성을 다운로드하도록 해야 합니다. 인터넷 액세스가 제한된 VM으로 작업하는 경우 모든 종속성을 직접 패키지해야 합니다.

종속성을 파악하는 것은 약간 까다로울 수 있습니다. 전체 종속성 트리를 표시할 수 있는 타사 도구가 있습니다.

Ubuntu에서 sudo apt show <package_name> | grep Depends를 실행하여 sudo apt-get install <packge_name> 명령을 실행할 때 설치되는 모든 패키지를 표시할 수 있습니다. 그런 다음, 해당 출력을 사용해 모든 .deb 파일을 다운로드하여 애플리케이션 패키지로 사용할 수 있는 보관 파일을 만들 수 있습니다.

  1. 예를 들어 Ubuntu용 PowerShell을 설치할 VM 애플리케이션 패키지를 만들려면 먼저, 다음 명령을 실행하여 PowerShell을 다운로드할 수 있는 리포지토리를 사용하도록 설정하고 새 Ubuntu VM에 대한 패키지 종속성을 식별합니다.
# Download the Microsoft repository GPG keys
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
sudo rm -rf packages-microsoft-prod.deb
sudo apt update
sudo apt show powershell | grep Depends
  1. 다음 패키지를 나열하는 Depends 줄의 출력을 확인합니다.
Depends: libc6, libgcc1, libgssapi-krb5-2, libstdc++6, zlib1g, libicu72|libicu71|libicu70|libicu69|libicu68|libicu67|libicu66|libicu65|libicu63|libicu60|libicu57|libicu55|libicu52, libssl3|libssl1.1|libssl1.0.2|libssl1.
  1. sudo apt-get download <package_name>을 사용하여 이러한 각 파일을 다운로드하고 모든 파일이 포함된 tar 압축 보관 파일을 만듭니다.
  • Ubuntu 18.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download libgcc1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl1.1
sudo apt-get download libicu60
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 20.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download libgcc1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl1.1
sudo apt-get download libicu66
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 22.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download libgcc1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl3
sudo apt-get download libicu70
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  1. 이 tar 보관 파일이 애플리케이션 패키지 파일입니다.
  • 이 경우 설치 명령은 다음과 같습니다.
sudo tar -xvzf powershell.tar.gz && sudo dpkg -i *.deb
  • 제거 명령은 다음과 같습니다.
sudo apt remove powershell

모든 종속성을 명시적으로 제거하는 대신 sudo apt autoremove를 사용합니다. 종속성이 겹치는 다른 애플리케이션을 설치했을 수 있으며 이 경우 명시적 제거 명령이 실패합니다.

종속성을 직접 해결하지 않으려는 경우와 apt이 리포지토리에 연결할 수 있는 경우에는 단 하나의 .deb 파일로 애플리케이션을 설치하고 apt이 종속성을 처리하도록 할 수 있습니다.

설치 명령 예제:

dpkg -i <package_name> || apt --fix-broken install -y

Windows에서 VM 애플리케이션을 만들기 위한 팁

Windows에서 대부분의 타사 애플리케이션은 .exe 또는 .msi 설치 프로그램으로 사용할 수 있습니다. 일부는 추출 및 zip 파일 실행을 통해 사용할 수 있습니다. 각 모범 사례를 살펴보겠습니다.

.exe 설치 프로그램

설치 프로그램 실행 파일은 일반적으로 UI(사용자 인터페이스)를 시작하고 누군가가 UI를 통해 선택해야 합니다. 설치 프로그램이 자동 모드 매개 변수를 지원하는 경우 설치 문자열에 포함되어야 합니다.

또한 cmd.exe에는 실행 파일의 확장명으로 .exe가 필요하므로 .exe 확장명을 갖도록 파일 이름을 바꿔야 합니다.

실행 파일로 제공되는 myApp.exe에 대한 VM 애플리케이션 패키지를 만들려는 경우 내 VM 애플리케이션을 ‘myApp’이라고 한다면 애플리케이션 패키지가 현재 디렉터리에 있다고 가정하고 명령을 작성합니다.

"move .\\myApp .\\myApp.exe & myApp.exe /S -config myApp_config"

설치 프로그램 실행 파일이 제거 매개 변수를 지원하지 않는 경우 테스트 시스템에서 레지스트리를 조회하여 제거 프로그램이 어디에 있는지 알 수 있습니다.

레지스트리에서 제거 문자열은 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<installed application name>\UninstallString에 저장되므로 콘텐츠를 내 제거 명령으로 사용합니다.

'\"C:\\Program Files\\myApp\\uninstall\\helper.exe\" /S'

.MSI 설치 프로그램

.msi 설치 프로그램의 명령줄 실행의 경우 애플리케이션을 설치하거나 제거하는 명령은 msiexec를 사용해야 합니다. 일반적으로 msiexec는 별도의 자체 프로세스로 실행되고 cmd는 완료될 때까지 기다리지 않으므로 둘 이상의 VM 애플리케이션을 설치할 때 문제가 발생할 수 있습니다. start 명령은 msiexec와 함께 사용하여 명령이 반환되기 전에 설치가 완료되도록 할 수 있습니다. 예시:

start /wait %windir%\\system32\\msiexec.exe /i myapp /quiet /forcerestart /log myapp_install.log

제거 명령 예제:

start /wait %windir%\\system32\\msiexec.exe /x $appname /quiet /forcerestart /log ${appname}_uninstall.log

압축된 파일

.zip 또는 압축된 다른 파일의 경우 애플리케이션 패키지의 이름을 바꾸고 해당 콘텐츠의 압축을 원하는 대상에 풉니다.

설치 명령 예제:

rename myapp myapp.zip && mkdir C:\myapp && powershell.exe -Command "Expand-Archive -path myapp.zip -destinationpath C:\myapp"

제거 명령 예제:

rmdir /S /Q C:\\myapp

실패를 배포 실패로 처리

VM 애플리케이션 확장은 VM 앱이 설치/업데이트/제거되는 동안 실패했는지 여부에 관계없이 항상 성공을 반환합니다. VM 애플리케이션 확장은 확장 또는 기본 인프라에 문제가 있는 경우에만 확장 상태를 오류로 보고합니다. 이 동작은 “실패를 배포 실패로 처리” 플래그에 의해 트리거되며 기본적으로 $false로 설정되지만 $true로 변경할 수 있습니다. 실패 플래그는 PowerShell 또는 CLI에서 구성할 수 있습니다.

VM 애플리케이션 문제 해결

특정 VM 애플리케이션이 VM 인스턴스에 성공적으로 추가되었는지 여부를 확인하려면 VM 애플리케이션 확장의 메시지를 확인합니다.

VM 확장 상태 확인에 대한 자세한 내용은 Linux용 가상 머신 확장 및 기능Windows용 가상 머신 확장 및 기능을 참조하세요.

VM 확장의 상태를 확인하려면 Get-AzVM을 사용합니다.

Get-AzVM -name <VM name> -ResourceGroupName <resource group name> -Status | convertto-json -Depth 10

확장 집합 확장의 상태를 확인하려면 Get-AzVMSS를 사용합니다.

$result = Get-AzVmssVM -ResourceGroupName $rgName -VMScaleSetName $vmssName -InstanceView
$resultSummary  = New-Object System.Collections.ArrayList
$result | ForEach-Object {
    $res = @{ instanceId = $_.InstanceId; vmappStatus = $_.InstanceView.Extensions | Where-Object {$_.Name -eq "VMAppExtension"}}
    $resultSummary.Add($res) | Out-Null
}
$resultSummary | convertto-json -depth 5

오류 메시지

메시지 설명
현재 VM 애플리케이션 버전 {name}은(는) {date}에 더 이상 사용되지 않습니다. 이미 더 이상 사용되지 않는 VM 애플리케이션 버전을 배포하려고 했습니다. 특정 버전을 지정하는 대신 latest를 사용해보세요.
현재 VM 애플리케이션 버전 {name}은(는) OS {OS}을(를) 지원하지만 현재 OSDisk의 OS는 {OS}입니다. Windows 인스턴스에 Linux 애플리케이션을 배포하려고 했거나 그 반대의 경우입니다.
최대 VM 애플리케이션 수(최대=5, 현재={count})를 초과했습니다. 더 적은 수의 애플리케이션을 사용하고 요청을 다시 시도하세요. 현재 VM 또는 확장 집합당 5개의 VM 애플리케이션만 지원합니다.
둘 이상의 VM 애플리케이션이 동일한 packageReferenceId로 지정되었습니다. 동일한 애플리케이션이 두 번 이상 지정되었습니다.
이 이미지에 액세스할 권한이 없는 구독입니다. 구독에는 이 애플리케이션 버전에 대한 액세스 권한이 없습니다.
인수의 스토리지 계정이 없습니다. 이 구독에 대한 애플리케이션이 없습니다.
플랫폼 이미지 {image}를 사용할 수 없습니다. 스토리지 프로필의 모든 필드가 올바른지 확인하세요. 스토리지 프로필 정보에 대한 자세한 내용은 https://aka.ms/storageprofile를 참조하세요. 애플리케이션이 없습니다.
갤러리 이미지 {image}은(는) {region} 지역에서 사용할 수 없습니다. 이미지 소유자에게 문의하여 이 지역으로 복제하거나 요청한 지역을 변경합니다. 갤러리 애플리케이션 버전이 있지만 이 지역에 복제되지 않았습니다.
SAS가 원본 URL {uri}에 유효하지 않습니다. URL(mediaLink 또는 defaultConfigurationLink)에 대한 정보 검색을 시도할 때 스토리지에서 Forbidden 오류가 발생했습니다.
원본 URI {uri}에서 참조하는 Blob이 없습니다. mediaLink 또는 defaultConfigurationLink 속성에 대해 제공된 Blob이 없습니다.
‘원격 이름을 찾을 수 없습니다.’ 오류로 인해 갤러리 애플리케이션 버전 URL {url}에 액세스할 수 없습니다. Blob이 있고 공개적으로 액세스할 수 있거나 읽기 권한이 있는 SAS URL인지 확인합니다. 가능성이 가장 높은 경우는 읽기 권한이 있는 SAS URI가 제공되지 않은 것입니다.
{error description} 오류로 인해 갤러리 애플리케이션 버전 URL {url}에 액세스할 수 없습니다. Blob이 있고 공개적으로 액세스할 수 있거나 읽기 권한이 있는 SAS URL인지 확인합니다. 제공된 스토리지 Blob에 이슈가 있었습니다. 오류 설명에 자세한 정보가 제공됩니다.
{operationName} 작업은 삭제로 표시되어 있기 때문에 {application}에서 허용되지 않습니다. 삭제 작업을 다시 시도(하거나 실행 중인 작업이 완료되기를 기다림)할 수 있습니다. 현재 삭제 중인 애플리케이션을 업데이트하려고 합니다.
'galleryApplicationVersion.properties.publishingProfile.replicaCount' 매개변수의 {value} 값이 범위를 벗어났습니다. 값은 1에서 3(포함) 사이여야 합니다. VM 애플리케이션 버전에는 1~3개의 복제본만 허용됩니다.
‘galleryApplicationVersion.properties.publishingProfile.manageActions.install’ 속성을 변경할 수 없습니다. (또는 업데이트, 삭제) 기존 VmApplication에서 관리 작업을 변경할 수 없습니다. 새 VmApplication 버전이 생성되어야 합니다.
‘galleryApplicationVersion.properties.publishingProfile.settings.packageFileName’ 속성을 변경할 수 없습니다. (또는 configFileName) 패키지 파일 이름 또는 구성 파일 이름과 같은 설정을 변경할 수 없습니다. 새 VmApplication 버전이 생성되어야 합니다.
소스 URI {uri}에서 참조하는 Blob이 너무 큽니다(크기 = {size}). 허용되는 최대 Blob 크기는 '1GB'입니다. mediaLink 또는 defaultConfigurationLink에서 참조하는 Blob의 최대 크기는 현재 1GB입니다.
원본 URI {uri}에서 참조하는 Blob이 비어 있습니다. 빈 Blob이 참조되었습니다.
{type} Blob 유형은 {operation} 작업에 지원되지 않습니다. 페이지 Blob 및 블록 Blob만 지원됩니다. VmApplications는 페이지 Blob 및 블록 Blob만 지원합니다.
SAS가 원본 URL {uri}에 유효하지 않습니다. mediaLink 또는 defaultConfigurationLink에 대해 제공된 SAS URI가 유효한 SAS URI가 아닙니다.
구독에 필수 기능인 {featureName}이(가) 누락되어 대상 지역에 {region}을(를) 지정할 수 없습니다. 필요한 기능을 사용하여 구독을 등록하거나 대상 지역 목록에서 지역을 제거합니다. 특정한 제한된 지역에서 VmApplications를 사용하려면 해당 구독에 대해 기능 플래그가 등록되어 있어야 합니다.
갤러리 이미지 버전 게시 프로필 영역 {regions}에는 이미지 버전 {location}의 위치가 포함되어야 합니다. 복제 지역 목록에는 애플리케이션 버전이 있는 위치가 포함되어야 합니다.
대상 게시 지역에는 중복 지역이 허용되지 않습니다. 게시 지역에는 중복이 없을 수 있습니다.
갤러리 애플리케이션 버전 리소스는 현재 암호화를 지원하지 않습니다. 대상 지역에 대한 암호화 속성은 VM 애플리케이션에서 지원되지 않습니다.
엔터티 이름이 요청 URL의 이름과 일치하지 않습니다. 요청 URL에 지정된 갤러리 애플리케이션 버전이 요청 본문에 지정된 버전과 일치하지 않습니다.
갤러리 애플리케이션 버전 이름이 유효하지 않습니다. 애플리케이션 버전 이름은 Major(int32)를 따라야 합니다. Minor(int32). Patch(int32) 형식. 여기서 int는 0과 2,147,483,647(포함) 사이입니다. 예: 1.0.0, 2018.12.1 등 갤러리 애플리케이션 버전은 지정된 형식을 따라야 합니다.

다음 단계