연습 - ARM 템플릿을 사용하여 기본 Azure Logic Apps 워크플로 배포

완료됨

이 단원에서는 Azure Resource Manager 템플릿을 사용하여 Azure Logic Apps의 워크플로를 배포합니다.

Azure에서 리소스 만들기

일반적으로 먼저 만들어야 하는 모든 항목을 보관할 리소스 그룹을 만들어 보겠습니다. 리소스 그룹을 사용하면 모든 VM(가상 머신), 디스크, 네트워크 인터페이스 및 하나의 단위로써 솔루션을 구성하는 기타 요소를 관리하는 데 도움이 됩니다.

Azure CLI 명령 az group create로 리소스 그룹을 만들 수 있습니다. 이 명령은 --name을 사용하여 구독에서 고유한 리소스 그룹 이름을 제공합니다. 또한 이 명령은 --location을 사용하여 리소스에 대한 기본 Azure 지역을 제공합니다.

그러나 무료 Azure 샌드박스 환경을 사용하므로 리소스 그룹은 만들 필요가 없습니다. 대신 이 연습에서 이전에 만든 리소스 그룹 [샌드박스 리소스 그룹 이름]을 사용할 수 있습니다.

기본 Resource Manager 템플릿 다운로드 및 검사

  1. Cloud Shell에서 다음 curl 명령을 실행하여 GitHub에서 템플릿을 다운로드합니다.

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/master/basic-template/template.json > basic-template.json
    
  2. 템플릿을 보려면 기본 제공 편집기에서 엽니다.

    code basic-template.json
    

    template.json 설명된 논리 앱 워크플로 정의는 다음 목록에 나와 있습니다.

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {},
        "variables": {},
        "resources": [
            {
                "type": "Microsoft.Logic/workflows",
                "apiVersion": "2017-07-01",
                "name": "HelloLogicAppsTemplate",
                "location": "westus2",
                "properties": {
                    "state": "Enabled",
                    "definition": {
                        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                        "contentVersion": "1.0.0.0",
                        "parameters": {},
                        "triggers": {
                            "manual": {
                                "type": "Request",
                                "kind": "Http",
                                "inputs": {
                                    "method": "GET",
                                    "schema": {}
                                }
                            }
                        },
                        "actions": {
                            "Response": {
                                "runAfter": {},
                                "type": "Response",
                                "kind": "Http",
                                "inputs": {
                                    "body": "Hello Logic Apps Template!",
                                    "statusCode": 200
                                }
                            }
                        },
                        "outputs": {}
                    },
                    "parameters": {}
                }
            }
        ],
        "outputs": {
            "logicAppUrl": {
               "type": "string",
               "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
            }
         }
    }
    

    이전 JSON 정의와 템플릿 이름에서 확인할 수 있듯이 이 논리 앱 워크플로는 기본입니다. 이 앱의 주요 구성 요소를 살펴보겠습니다.

    다음 코드 조각에는 HelloLogicAppsTemplate이라는 앱이 있습니다. 이 이름은 템플릿에 하드 코드되어 있습니다. 앱을 실행하는 위치도 westus2로 하드 코드되어 있습니다.

    "name": "HelloLogicAppsTemplate",
    "location": "westus2",
    

    아래쪽으로 triggers 섹션까지 스크롤하면 HTTP GET 요청으로 워크플로가 트리거되는 것을 확인할 수 있습니다. 트리거 이름은 manual입니다.

    "triggers": {
        "manual": {
            "type": "Request",
            "kind": "Http",
            "inputs": {
                "method": "GET",
                "schema": {}
            }
        }
    },
    

    작업 섹션에서는 이 워크플로에 한 단계 또는 작업이 포함되어 있음을 알아봅니다. 이 작업은 메시지 Hello Azure Logic Apps Template!과 함께 요청에 응답합니다.

    "actions": {
        "Response": {
            "runAfter": {},
            "type": "Response",
            "kind": "Http",
            "inputs": {
                "body": "Hello Logic Apps Template!",
                "statusCode": 200
            }
        }
    },
    

    Resource Manager 템플릿의 출력 섹션에는 logicAppUrl이라는 단일 출력이 있습니다. 이 출력 변수는 배포된 논리 앱 리소스의 URL을 나열합니다. 이 URL을 사용하면 앱을 더 쉽게 테스트할 수 있습니다. 출력에서는 listCallbackURL을 사용하여 URl를 만들지만 워크플로 이름과 트리거 이름이 여기에서 하드 코드되어 있습니다.

    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
        }
     }
    

    이제 이 논리 앱을 배포하고 테스트해 봅니다.

템플릿 유효성 검사 및 배포

리소스 그룹에 배포할 것이므로 논리 앱 리소스를 배포하기 위해 az deployment group create 명령을 사용합니다. 이 명령으로 배포할 때는 --template-uri 매개 변수로 위치를 지정하여 원격 템플릿을 배포하도록 선택할 수 있습니다. 이 경우에는 로컬에 있는 템플릿을 배포하려 하므로 --template-file 매개 변수를 설정합니다.

  1. Cloud Shell에서 실행 az deployment group validate 하여 템플릿의 유효성을 검사합니다.

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file basic-template.json
    

    --template-file 인수는 로컬 템플릿을 가리킵니다. 템플릿 파일 이름은 basic-template.json입니다.

    템플릿이 유효성 검사를 통과했음을 알려주는 큰 JSON 블록이 출력으로 표시됩니다.

    Azure Resource Manager는 템플릿 매개 변수를 채우고 템플릿이 구독에서 성공적으로 실행될지 여부를 확인합니다.

    유효성 검사에 실패한 경우 출력의 실패에 대한 자세한 설명이 표시됩니다.

  2. Cloud Shell에서 다음 az deployment group create 명령을 실행하여 기본 템플릿으로 정의된 논리 앱 리소스를 샌드박스 리소스 그룹에 배포합니다.

    az deployment group create \
    --name MyDeployment \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file basic-template.json
    

    이 명령은 이전 명령과 유사하지만 배포에 이름을 부여하는 --name 인수를 포함합니다.

    이 명령을 완료하는 데 2~3분이 걸립니다. 배포가 완료되면 배포를 설명하는 출력으로 다른 큰 JSON 블록이 표시됩니다. provisioningState JSON 결과에 값Succeeded이 표시됩니다.

배포 확인

  1. 다음을 실행 az deployment group show 하여 배포를 확인합니다.

    az deployment group show \
    --name MyDeployment \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" 
    

    이전에 본 것과 동일한 JSON 블록이 표시됩니다. 배포에 대해 이러한 세부 사항이 필요하면 나중에 이 명령을 실행할 수 있습니다. 출력이 JSON 형식으로 구조화되어 있어서, 배포 및 클라우드 사용을 추적하는 데 사용하는 다른 도구에 쉽게 추가할 수 있습니다.

  2. 실행 중인 앱을 확인하려면 JSON 결과에서 logicAppUrl 값을 찾습니다. URL을 선택하거나 복사하여 새 브라우저 창에 붙여넣습니다. 페이지에는 다음 스크린샷과 같이 Hello Azure Logic Apps 템플릿! 메시지가 표시됩니다.

    Screenshot with Web browser displaying response from our basic logic app workflow.

축하합니다! Azure Resource Manager 템플릿을 사용하여 논리 앱 워크플로를 성공적으로 배포했습니다.

이 연습에서 살펴본 것처럼 기본 템플릿에는 여러 하드 코드된 값이 있습니다. 이러한 값을 사용하면 템플릿의 유연성이 예상보다 낮아지게 될 수 있습니다. 매개 변수를 사용하여 상황을 개선할 수 있습니다.