연습 - Azure Resource Manager 함수를 사용하여 식 만들기

완료됨

참고

처음으로 샌드박스를 활성화하고 약관에 동의하면 Microsoft 계정이 Microsoft Learn 샌드박스라는 새로운 Azure 디렉터리와 연결됩니다. 사용자는 Concierge Subscription이라는 특수 구독에 추가됩니다.

이 연습에서는 ARM(Azure Resource Manager) 템플릿 함수를 사용하여 식을 만듭니다. 이 식에서는 접두사 입력을 리소스 그룹 ID의 해시와 결합하여 각 리소스 그룹의 고유한 이름을 만듭니다. 결과로 dev2hu6sbtr5staging5his8hgr67과 같은 Azure Storage 계정 이름이 생성됩니다.

이 연습에서는 Visual Studio Code용 Azure Resource Manager 도구를 사용합니다. Visual Studio Code에서 해당 확장을 설치해야 합니다.

ARM 템플릿 파일 만들기

이전 모듈에서는 스토리지 계정을 배포하는 ARM 템플릿을 만들었습니다. 이 파일에 매개 변수와 출력을 추가했습니다. 여기서는 해당 파일로 시작하지만 오버헤드를 줄이기 위해 출력이 제거됩니다.

  1. Visual Studio Code를 열고 azuredeploy.json이라는 파일을 만듭니다. 이전 모듈에서 이 파일을 사용하는 경우 해당 파일을 사용할 수 있습니다.

  2. 파일의 내용을 다음 코드로 바꿉니다.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
           "storageName": {
               "type": "string",
               "minLength": 3,
               "maxLength": 24
           },
            "storageSKU": {
                "type": "string",
                "defaultValue": "Standard_LRS",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS",
                    "Standard_RAGRS",
                    "Standard_ZRS",
                    "Premium_LRS",
                    "Premium_ZRS",
                    "Standard_GZRS",
                    "Standard_RAGZRS"
                ]
            }
       },
        "functions": [],
        "variables": {},
        "resources": [{
            "name": "[parameters('storageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": {
                "displayName": "[parameters('storageName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
         "outputs": {}
    }
    
  3. 이전 모듈을 완료하지 않은 경우 잠시 후 이 파일을 검토해 보세요. storageName 매개 변수를 기록해 둡니다. 스토리지 계정의 고유한 이름을 전달하는 데 사용된 매개 변수입니다.

고유한 스토리지 계정 이름을 설정하는 식 작성

스토리지 계정의 이름을 전달하는 대신 스토리지 계정 이름에 대한 접두사를 사용하도록 매개 변수를 변경합니다. 이 매개 변수는 식의 concat 함수에 전달됩니다.

  1. parameters 섹션에서 storageNamestoragePrefix로 변경합니다.

  2. storagePrefix 매개 변수 maxLength: 특성의 값을 11로 변경합니다. 스토리지 계정 이름의 최대 길이는 24자이므로 만든 함수에서 추가된 해시로 인해 이름이 24자보다 길지 않도록 해야 합니다.

  3. 고유한 스토리지 계정 이름을 설정하는 식을 만듭니다. resources 섹션에서 name:displayName: 특성의 값을 "[parameters('storageName')]"에서 "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"로 변경합니다. 이전 단원에서 이 식에 대해 알아보았습니다. 이제 파일이 다음 파일과 같이 표시됩니다.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
           "storagePrefix": {
               "type": "string",
               "minLength": 3,
               "maxLength": 11
           },
            "storageSKU": {
                "type": "string",
                "defaultValue": "Standard_LRS",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS",
                    "Standard_RAGRS",
                    "Standard_ZRS",
                    "Premium_LRS",
                    "Premium_ZRS",
                    "Standard_GZRS",
                    "Standard_RAGZRS"
                ]
            }
       },
        "functions": [],
        "variables": {},
        "resources": [{
            "name": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": {
                "displayName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    

Azure에 ARM 템플릿 배포

Azure에 해당 템플릿을 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다. Azure CLI 도구가 설치되어 있는지 확인하세요. 또한 샌드박스를 활성화한 동일한 계정에 로그인해야 합니다.

  1. 터미널 메뉴를 사용하여 터미널 창을 엽니다.

  2. 터미널 창에서 오른쪽의 드롭다운 메뉴에 bash가 표시되면 올바른 셸을 사용하고 있는 것입니다. 다음 섹션으로 건너뛸 수 있습니다.

    A screenshot that shows the Visual Studio Code terminal window with bash in the drop-down menu.

  3. 올바른 셸이 없는 경우 드롭다운 메뉴에서 기본 셸 선택을 선택합니다.

  4. bash를 선택합니다.

    Screenshot that shows the select shell list in the Visual Studio Code terminal window.

  5. 터미널에서 +를 선택하여 셸로 bash를 사용하여 새 터미널을 만듭니다.

Azure에 로그인

  1. Visual Studio Code의 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다. 이 명령을 실행하면 계정에 로그인할 수 있는 브라우저가 열립니다.

    az login
    
  2. 로그인하면 터미널에 계정과 연결된 구독 목록이 표시됩니다. 샌드박스를 활성화한 경우 Concierge Subscription이라는 구독이 표시됩니다. 나머지 연습에서 해당 구독을 사용합니다.

  3. 이 세션에서 실행하는 모든 Azure CLI 명령의 기본 구독을 설정합니다.

    az account set --subscription "Concierge Subscription"
    

    참고

    최근에 샌드박스를 두 개 이상 사용한 경우에는 Concierge Subscription이 두 개 이상 나열될 수 있습니다. 이 경우 다음 두 단계를 사용하여 기본 구독을 설정합니다. 위 명령이 성공한 경우 다음 두 단계를 건너뜁니다.

  4. Concierge Subscription ID를 가져옵니다.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 구독 ID를 사용하여 기본 구독을 설정합니다. {your subscription ID}를 최신 Concierge Subscription ID로 바꿉니다.

    az account set --subscription {your subscription ID}
    

기본 리소스 그룹 설정

  • 기본 리소스 그룹을 샌드박스 환경에서 생성된 리소스 그룹으로 설정합니다. 이렇게 하면 연습의 나머지 Azure CLI 명령에서 해당 매개 변수를 생략할 수 있습니다.

    az configure --defaults group=<rgn>[sandbox resource group name]</rgn>
    

Azure에 템플릿 배포

이전 모듈의 배포 명령에 대해 알아보았습니다. 여기서는 Azure CLI az deployment group create 명령을 사용합니다.

  • Visual Studio Code 터미널에서 Azure CLI 명령을 사용하여 템플릿을 배포합니다. {your-prefix}를 다른 문자열로 바꾸는 것을 잊지 마세요. 예를 들어 storage를 사용할 수 있습니다.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addfunction-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storagePrefix={your-prefix}
    

    코드의 첫 번째 섹션에서 배포할 템플릿 파일의 경로 및 배포의 이름에 해당하는 Azure CLI 변수를 설정합니다. 그런 다음 az deployment group create 명령을 사용하여 Azure에 템플릿을 배포했습니다.

    터미널에 메시지가 Running... 표시됩니다.

Azure에 해당 템플릿을 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다. Azure PowerShell 도구를 설치했고 샌드박스를 활성화한 동일한 계정에 로그인하는지 확인합니다.

  1. 터미널 메뉴를 사용하여 터미널 창을 엽니다.

  2. 터미널 창에서 오른쪽의 드롭다운 메뉴에 pwsh가 표시되면 올바른 셸을 사용하고 있는 것입니다. 다음 섹션으로 건너뛸 수 있습니다.

    A screenshot that shows the Visual Studio Code terminal window with pwsh in the drop-down menu.

  3. 올바른 셸이 없는 경우 드롭다운 메뉴에서 기본 셸 선택을 선택합니다.

  4. pwsh를 선택합니다.

    Screenshot that shows the select shell list in the Visual Studio Code terminal window.

  5. 터미널에서 선택하여 + pwsh를 셸로 사용하여 새 터미널을 만듭니다.

Azure PowerShell을 사용하여 Azure에 로그인

  1. Visual Studio Code의 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다. 이 명령을 실행하면 계정에 로그인할 수 있는 URL에 대한 브라우저를 열라는 메시지가 표시됩니다. 프롬프트에 있는 코드를 사용합니다. 샌드박스를 활성화하는 데 사용한 동일한 계정으로 로그인합니다.

    Connect-AzAccount
    
  2. 로그인하면 터미널에 계정과 연결된 구독 목록이 표시됩니다. 샌드박스를 활성화한 경우 Concierge Subscription이라는 구독이 표시됩니다. 나머지 연습에서 해당 구독을 사용합니다.

    이 세션에서 실행하는 모든 Azure CLI 명령의 기본 구독을 설정합니다.

  3. 구독 ID를 복사합니다. 이 명령은 구독 및 해당 ID를 나열합니다. 구독 ID는 두 번째 열입니다. Concierge Subscription을 찾고 두 번째 열을 복사합니다. 모양은 다음과 같습니다. cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0

    Get-AzSubscription
    
  4. 활성 구독을 Concierge Subscription으로 변경합니다. 복사한 ID로 바꿔 {Your subscription ID} 야 합니다.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    
  5. 기본 리소스 그룹을 샌드박스 환경에서 생성된 리소스 그룹으로 설정합니다. 이렇게 하면 연습의 나머지 Azure PowerShell 명령에서 해당 매개 변수를 생략할 수 있습니다.

    Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

Azure에 템플릿 배포

이전 모듈의 배포 명령에 대해 알아보았습니다. 여기서는 Azure PowerShell New-AzResourceGroupDeployment 명령을 사용합니다.

  • Visual Studio Code 터미널에서 Azure PowerShell 명령을 사용하여 템플릿을 배포합니다. {your-prefix}를 다른 문자열로 바꾸는 것을 잊지 마세요. 예를 들어 storage를 사용할 수 있습니다.

    $templateFile = "azuredeploy.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addfunction-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storagePrefix {your-prefix}
    

코드의 첫 번째 섹션에서 배포할 템플릿 파일의 경로 및 배포의 이름에 해당하는 Azure PowerShell 변수를 설정했습니다. 그런 다음 New-AzResourceGroupDeployment 명령을 사용하여 Azure에 템플릿을 배포했습니다.

배포 확인

배포가 완료되면 Azure Portal로 이동하고 샌드박스 구독에 있는지 확인합니다. 구독을 확인하려면 페이지의 오른쪽 위에 있는 아바타를 선택합니다. 디렉터리 전환을 선택합니다. 목록에서 Microsoft Learn 샌드박스 디렉터리를 선택합니다.

  1. 왼쪽 창에서 리소스 그룹을 선택합니다.

  2. [샌드박스 리소스 그룹 이름]을 선택합니다.

  3. 개요 섹션에 하나의 배포가 성공했다고 표시됩니다.

    Screenshot of the Azure portal that shows the resource group overview. The Deployments section shows that one deployment succeeded.

  4. 1 성공을 선택하여 배포 세부 정보를 확인합니다.

    Screenshot of the Azure portal that shows deployments. One deployment is listed and has a status of Succeeded.

  5. addfunction을 선택하여 배포된 리소스를 확인합니다.

    Screenshot of the Azure portal that shows that the storage account deployed.

  6. 모듈의 뒷부분에서 배포를 다시 검사 수 있도록 브라우저에서 페이지를 열어 둡니다.