빠른 시작: ARM 템플릿을 사용하여 Azure SignalR Service 배포

이 빠른 시작에서는 ARM(Azure Resource Manager) 템플릿을 사용하여 Azure SignalR Service를 만드는 과정을 안내합니다. Azure Portal, PowerShell 또는 CLI를 통해 Azure SignalR Service를 배포할 수 있습니다.

Azure Resource Manager 템플릿은 프로젝트의 인프라 및 구성을 정의하는 JSON(JavaScript Object Notation) 파일입니다. 이 템플릿은 선언적 구문을 사용합니다. 배포를 만들기 위한 프로그래밍 명령 시퀀스를 작성하지 않고 의도한 배포를 설명합니다.

환경이 필수 구성 요소를 충족하고 ARM 템플릿 사용에 익숙한 경우 Azure에 배포 단추를 선택합니다. 로그인하면 Azure Portal에서 템플릿이 열립니다.

Button to deploy the Resource Manager template to Azure.

필수 조건

활성 구독이 있는 Azure 계정. 체험 계정 만들기

템플릿 검토

이 빠른 시작에서 사용되는 템플릿은 Azure 빠른 시작 템플릿에서 나온 것입니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.9.1.41621",
      "templateHash": "7185938028783900711"
    }
  },
  "parameters": {
    "name": {
      "type": "string",
      "defaultValue": "[uniqueString(resourceGroup().id)]",
      "metadata": {
        "description": "The globally unique name of the SignalR resource to create."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the SignalR resource."
      }
    },
    "pricingTier": {
      "type": "string",
      "defaultValue": "Standard_S1",
      "allowedValues": [
        "Free_F1",
        "Standard_S1",
        "Premium_P1"
      ],
      "metadata": {
        "description": "The pricing tier of the SignalR resource."
      }
    },
    "capacity": {
      "type": "int",
      "defaultValue": 1,
      "allowedValues": [
        1,
        2,
        5,
        10,
        20,
        50,
        100
      ],
      "metadata": {
        "description": "The number of SignalR Unit."
      }
    },
    "serviceMode": {
      "type": "string",
      "defaultValue": "Default",
      "allowedValues": [
        "Default",
        "Serverless",
        "Classic"
      ],
      "metadata": {
        "description": "Visit https://github.com/Azure/azure-signalr/blob/dev/docs/faq.md#service-mode to understand SignalR Service Mode."
      }
    },
    "enableConnectivityLogs": {
      "type": "bool",
      "defaultValue": true
    },
    "enableMessagingLogs": {
      "type": "bool",
      "defaultValue": true
    },
    "enableLiveTrace": {
      "type": "bool",
      "defaultValue": true
    },
    "allowedOrigins": {
      "type": "array",
      "defaultValue": [
        "*"
      ],
      "metadata": {
        "description": "Set the list of origins that should be allowed to make cross-origin calls."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.SignalRService/signalR",
      "apiVersion": "2022-02-01",
      "name": "[parameters('name')]",
      "location": "[parameters('location')]",
      "sku": {
        "capacity": "[parameters('capacity')]",
        "name": "[parameters('pricingTier')]"
      },
      "kind": "SignalR",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "tls": {
          "clientCertEnabled": false
        },
        "features": [
          {
            "flag": "ServiceMode",
            "value": "[parameters('serviceMode')]"
          },
          {
            "flag": "EnableConnectivityLogs",
            "value": "[string(parameters('enableConnectivityLogs'))]"
          },
          {
            "flag": "EnableMessagingLogs",
            "value": "[string(parameters('enableMessagingLogs'))]"
          },
          {
            "flag": "EnableLiveTrace",
            "value": "[string(parameters('enableLiveTrace'))]"
          }
        ],
        "cors": {
          "allowedOrigins": "[parameters('allowedOrigins')]"
        },
        "networkACLs": {
          "defaultAction": "Deny",
          "publicNetwork": {
            "allow": [
              "ClientConnection"
            ]
          },
          "privateEndpoints": [
            {
              "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e",
              "allow": [
                "ServerConnection"
              ]
            }
          ]
        },
        "upstream": {
          "templates": [
            {
              "categoryPattern": "*",
              "eventPattern": "connect,disconnect",
              "hubPattern": "*",
              "urlTemplate": "https://example.com/chat/api/connect"
            }
          ]
        }
      }
    }
  ]
}

템플릿에서 다음과 같은 하나의 Azure 리소스를 정의합니다.

템플릿 배포

ARM 템플릿을 사용하여 Azure SignalR Service를 배포하려면 Azure Portal에서 다음 링크를 선택합니다.

Button to deploy the Resource Manager template to Azure.

Azure SignalR Service 배포 페이지에서 다음을 수행합니다.

  1. 원하는 경우 구독을 기본값에서 변경합니다.

  2. 리소스 그룹에 대해 새로 만들기를 선택하고, 새 리소스 그룹의 이름을 입력한 다음, 확인을 선택합니다.

  3. 새 리소스 그룹을 만든 경우 리소스 그룹에 대한 지역을 선택합니다.

  4. 원하는 경우 Azure SignalR Service의 새 이름위치(예: eastus2)를 입력합니다. 이름을 지정하지 않으면 자동으로 생성됩니다. 위치리소스 그룹의 지역과 동일하거나 다를 수 있습니다. 위치를 지정하지 않으면 기본적으로 리소스 그룹과 동일한 지역으로 설정됩니다.

  5. 가격 책정 계층(Free_F1 또는 Standard_S1)을 선택하고, 용량(SignalR 단위 수)을 입력하고, 기본값(허브 서버 필요), 서버리스(서버 연결을 허용하지 않음) 또는 클래식(허브에 서버 연결이 있는 경우에만 허브 서버로 라우트됨) 서비스 모드 중 하나를 선택합니다. 이제 연결 로그 사용 또는 메시징 로그 사용을 선택합니다.

    참고 항목

    Free_F1 가격 책정 계층의 경우 용량은 1 단위로 제한됩니다.

    Screenshot of the ARM template for creating an Azure SignalR Service in the Azure portal.

  6. 검토 + 만들기를 선택합니다.

  7. 사용 약관을 읽은 다음, 만들기를 선택합니다.

참고 항목

배포가 완료될 때까지 몇 분 정도 걸릴 수 있습니다. 나중에 배포된 리소스를 검토하는 데 사용하는 Azure SignalR Service 및 리소스 그룹의 이름을 적어 두세요.

배포된 리소스 검토

새 Azure SignalR Service에 대한 개요를 보려면 다음 단계를 수행합니다.

  1. Azure Portal에서 SignalR을 검색하여 선택합니다.

  2. SignalR 목록에서 새 서비스를 선택합니다. 새 Azure SignalR Service에 대한 개요 페이지가 표시됩니다.

리소스 정리

더 이상 필요하지 않은 경우 리소스 그룹을 삭제합니다. 그러면 리소스 그룹의 리소스도 삭제됩니다.

  1. Azure Portal에서 리소스 그룹을 검색하여 선택합니다.

  2. 리소스 그룹 목록에서 리소스 그룹의 이름을 선택합니다.

  3. 리소스 그룹의 개요 페이지에서 리소스 그룹 삭제를 선택합니다.

  4. 확인 대화 상자에서 리소스 그룹의 이름을 입력한 다음, 삭제를 선택합니다.

다음 단계

ARM 템플릿을 만드는 과정을 안내하는 단계별 자습서는 다음을 참조하세요.