봇 프로비전 및 게시

적용 대상: SDK v4

이 문서에서는 Azure CLI를 사용하여 봇에 대한 리소스를 만들고, 배포할 봇을 준비하고, Azure에 봇을 배포하는 방법을 설명합니다.

이 문서에서는 배포할 준비가 된 봇이 있다고 가정합니다. 간단한 에코 봇을 만드는 방법에 대한 자세한 내용은 Bot Framework SDK를 사용하여 봇 만들기를 참조하세요. Bot Framework 샘플 리포지토리에 제공된 샘플 중 하나를 사용할 수도 있습니다.

이 문서에서는 봇에 대한 Azure Bot 리소스를 만듭니다. Web App Bot 리소스 또는 봇 채널 등록 리소스를 사용하는 기존 봇은 계속 작동하지만 이러한 리소스 유형을 사용하는 새 봇은 만들 수 없습니다.

참고 항목

Bot Framework JavaScript, C#및 Python SDK는 계속 지원되지만 Java SDK는 2023년 11월에 종료되는 최종 장기 지원으로 사용 중지됩니다. 이 리포지토리 내의 중요한 보안 및 버그 수정만 수행됩니다.

Java SDK를 사용하여 빌드된 기존 봇은 계속 작동합니다.

새 봇 빌드의 경우 Power Virtual Agents 사용을 고려하고 올바른 챗봇 솔루션을 선택하는 방법을 읽어 보세요.

자세한 내용은 봇 빌드의 미래를 참조 하세요.

필수 조건

  • Java 봇의 경우 Maven을 설치합니다.

  • 이 프로세스에서는 두 개의 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 봇에 대한 리소스를 만듭니다.

    현재 템플릿이 없는 경우 c#, JavaScript, Python 또는 Java와 같은 deploymentTemplates 폴더의 봇 프로젝트에 복사본을 만듭니다.

Azure CLI를 사용하여 봇을 프로비전하고 게시하려면 다음이 필요합니다.

  • 활성 구독이 있는 Azure 계정. 무료 계정을 만듭니다.

  • Azure CLI 설치

    프로그래밍 언어의 경우 다음 버전의 Azure CLI를 사용합니다. 일부 단계는 이후 버전의 CLI에서 작동하지 않습니다.

    언어 CLI 버전
    C# 및 JavaScript 2.39.0 이상
    Python 2.36.0
    Java 2.29.2

참고 항목

봇이 스토리지 서비스 또는 언어 서비스와 같은 추가 리소스를 사용하는 경우 별도로 배포해야 합니다.

배포 계획

시작하기 전에 이러한 결정을 내립니다.

의사 결정 주의
Azure에서 봇 리소스의 ID를 관리하는 방법 사용자 할당 관리 ID, 단일 테넌트 앱 등록 또는 뮤틀리 테넌트 앱 등록을 사용할 수 있습니다. 자세한 내용은 ID 리소스 만들기를 참조 하세요.
봇 리소스를 만들 리소스 그룹 또는 리소스 그룹 이 프로세스에 익숙해지려면 하나의 리소스 그룹을 사용하는 것이 좋습니다. 자세한 내용은 Azure 리소스 관리를 참조 하세요.
봇이 지역 또는 글로벌 봇인지 여부 지역 봇에 대한 자세한 내용은 Azure AI Bot Service의 지역화를 참조 하세요.

봇 ID는 몇 가지 다른 방법으로 Azure에서 관리할 수 있습니다.

  • 봇의 자격 증명을 직접 관리할 필요가 없도록 사용자가 할당한 관리 ID입니다.
  • 단일 테넌트 앱입니다.
  • 다중 테넌트 앱입니다.

사용자가 할당한 관리 ID 및 단일 테넌트 앱 유형에 대한 지원이 버전 4.15.0의 C# 및 JavaScript용 Bot Framework SDK에 추가되었습니다. 이러한 앱 유형은 다른 언어 또는 Bot Framework Composer, Bot Framework Emulator 또는 ngrok에서 지원되지 않습니다.

앱 유형 지원
사용자 할당 관리 ID Azure AI Bot Service 및 C# 및 JavaScript SDK
단일 테넌트 Azure AI Bot Service 및 C# 및 JavaScript SDK
다중 테넌트 Azure AI Bot Service, 모든 Bot Framework SDK 언어, 작성기, 에뮬레이터 및 ngrok

Important

Python 봇은 Windows 서비스 또는 봇이 포함된 리소스 그룹에 배포할 수 없습니다. 그러나 여러 Python 봇을 동일한 리소스 그룹에 배포할 수 있습니다. 다른 리소스 그룹에 Azure AI 서비스와 같은 다른 서비스를 만듭니다.

Azure 리소스

봇을 배포하기 전에 필요한 Azure 리소스를 만들거나 프로비전합니다. 일부 단계에서는 기존 리소스를 사용하거나 새 리소스를 만들 수 있습니다.

만들 새 리소스의 이름과 사용할 기존 리소스의 이름을 미리 결정하는 것이 유용할 수 있습니다. 봇은 이러한 유형의 리소스를 사용합니다.

  • 봇을 프로비전, 게시 및 관리하는 데 사용할 Azure 구독
  • 하나 이상의 리소스 그룹
  • 사용자가 할당한 관리 ID 또는 Microsoft Entra ID 앱 등록
  • App Service 계획 리소스
  • App Service 리소스
  • Azure Bot 리소스

리소스에서 사용되는 정보

Azure에서 리소스를 만들 때 Azure는 이후 단계에서 필요한 ID, 암호 및 기타 정보를 생성하거나 요청합니다. 다음 표에서는 기록해야 하는 리소스 이름, 생성되는 단계 및 사용되는 단계를 넘어서는 정보를 나열합니다.

주의

이러한 ID 및 암호의 대부분은 중요한 정보입니다. 일반적인 보안 지침에 대한 자세한 내용은 Bot Framework 보안 지침을 참조 하세요.

정보 생성되거나 발견된 위치 사용되는 위치
테넌트 ID 로그인하고 구독 선택 Azure CLI를 사용하여 App Service 리소스 만들기, Azure CLI를 사용하여 Azure Bot 리소스 만들기 또는 업데이트, 프로젝트 구성 설정 업데이트
앱 유형 ID 리소스 만들기 Azure CLI를 사용하여 App Service 리소스 만들기, Azure CLI를 사용하여 Azure Bot 리소스 만들기 또는 업데이트, 프로젝트 구성 설정 업데이트
Client ID ID 리소스 만들기 Azure CLI를 사용하여 App Service 리소스 만들기, Azure CLI를 사용하여 Azure Bot 리소스 만들기 또는 업데이트, 프로젝트 구성 설정 업데이트
기본 앱 서비스 URL Azure CLI를 사용하여 App Service 리소스 만들기 Azure CLI를 사용하여 Azure Bot 리소스 만들기 또는 업데이트
App Service 이름 Azure CLI를 사용하여 App Service 리소스 만들기 Azure에 봇 게시

로그인하고 구독 선택

  1. 명령 창을 엽니다.

  2. Azure에 로그인합니다.

    az login
    
    • 브라우저 창이 열립니다. 로그인 프로세스를 완료합니다.
    • 성공하면 이 명령은 계정에 액세스할 수 있는 구독 목록을 출력합니다.
  3. 사용할 구독을 설정하려면 다음을 실행합니다.

    az account set --subscription "<subscription>"
    

    구독의 경우 <사용할 구독>의 ID 또는 이름을 사용합니다.

  4. 사용자 할당 관리 ID 또는 단일 테넌트 봇을 만들려면 구독을 tenantId 기록합니다. 다음 단계에서 테넌트 ID를 사용합니다.

퍼블릭이 아닌 클라우드에서 작업해야 하는 경우 Azure CLI를 사용하여 Azure 클라우드 관리를 참조하세요.

리소스 그룹 만들기

적절한 리소스 그룹이 아직 없는 경우 명령을 사용하여 az group create 필요한 새 리소스 그룹을 만듭니다.

az group create --name "<group>" --location "<region>"
옵션 설명
name 만들 리소스 그룹의 이름입니다.
location 리소스 그룹을 만들 지역입니다.

자세한 내용은 Azure CLI를 사용하여 Azure 리소스 그룹을 관리하는 방법을 참조하세요.

ID 리소스 만들기

  1. 사용자 할당 관리 ID를 만들려면 az identity create 명령을 사용합니다. 성공하면 명령은 JSON 출력을 생성합니다.

    az identity create --resource-group "<group>" --name "<identity>"
    
    옵션 설명
    resource-group ID를 만들 리소스 그룹의 이름입니다.
    name 만들 ID 리소스의 이름입니다.

    자세한 내용은 az identity 참조를 참조하세요 .

  2. 이후 단계에서 필요한 값을 기록합니다.

    1. ID 리소스의 리소스 그룹 이름
    2. ID 리소스의 이름
    3. clientId 명령 출력에서

ARM 템플릿을 사용하여 리소스 만들기

봇에 대한 App Service 및 Azure Bot 리소스를 만듭니다. 두 단계 모두 ARM 템플릿과 az deployment group create Azure CLI 명령을 사용하여 리소스 또는 리소스를 만듭니다.

  1. 봇에 대한 App Service 리소스를 만듭니다. App Service는 새 App Service 또는 기존 App Service 계획 내에 있을 수 있습니다.

    자세한 단계는 Azure CLI를 사용하여 App Service를 만드는 방법을 참조하세요.

  2. 봇에 대한 Azure Bot 리소스를 만듭니다.

    자세한 단계는 Azure CLI를 사용하여 Azure 봇을 만들거나 업데이트하는 방법을 참조 하세요.

Important

다음 단계를 순서대로 수행할 수 있습니다. 그러나 Azure Bot을 먼저 만드는 경우 App Service 리소스를 만든 후 해당 메시징 엔드포인트를 업데이트해야 합니다.

프로젝트 구성 설정 업데이트

봇 ID 정보

다음 단계에 따라 봇의 구성 파일에 ID 정보를 추가합니다. 파일은 봇을 만드는 데 사용하는 프로그래밍 언어에 따라 다릅니다.

Important

Java 및 Python 버전의 Bot Framework SDK는 다중 테넌트 봇만 지원합니다. C# 및 JavaScript 버전은 봇의 ID를 관리하기 위한 세 가지 애플리케이션 유형을 모두 지원합니다.

언어 File name 주의
C# appsettings.json 봇의 ID를 관리하기 위한 세 가지 애플리케이션 유형을 모두 지원합니다.
JavaScript .env 봇의 ID를 관리하기 위한 세 가지 애플리케이션 유형을 모두 지원합니다.
Java application.properties 다중 테넌트 봇만 지원합니다.
Python config.py 다중 테넌트 봇만 지원합니다. 메서드 호출에 대한 인수 os.environ.get 로 ID 속성을 제공합니다.

추가해야 하는 ID 정보는 봇의 애플리케이션 유형에 따라 달라집니다. 구성 파일에 다음 값을 제공합니다.

C# 및 JavaScript 봇에만 사용할 수 있습니다.

속성
MicrosoftAppType UserAssignedMSI
MicrosoftAppId 사용자 할당 관리 ID의 클라이언트 ID입니다.
MicrosoftAppPassword 해당 없음. 사용자가 할당한 관리 ID 봇에 대해 이 값을 비워 둡니다.
MicrosoftAppTenantId 사용자 할당 관리 ID의 테넌트 ID입니다.

프로젝트 파일 준비

봇을 배포하기 전에 프로젝트 파일을 준비합니다.

  1. 프로젝트의 루트 폴더로 전환합니다. C#의 경우 루트는 .csproj 파일이 포함된 폴더입니다.

  2. 릴리스 모드에서 클린 다시 빌드합니다.

  3. 이전에 수행하지 않은 경우 로컬 소스 코드 디렉터리의 루트에 필요한 파일을 추가하려면 실행 az bot prepare-deploy 합니다. 이 명령은 .deployment 파일을 봇 프로젝트 폴더에 생성합니다.

    az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "<my-cs-proj>"
    
    옵션 설명
    lang 봇의 언어 또는 런타임입니다. Csharp을 사용합니다.
    code-dir 생성된 배포 파일을 배치할 디렉터리입니다. 프로젝트의 루트 폴더를 사용합니다. 기본값은 현재 디렉터리입니다.
    proj-file-path 옵션을 기준으로 봇에 대한 .csproj 파일의 경로입니다 code-dir .
  4. 프로젝트의 루트 폴더 내에서 모든 파일 및 하위 폴더가 포함된 zip 파일을 만듭니다.

Azure에 봇 게시

이제 App Service 리소스에 봇에 대한 코드를 배포할 준비가 된 것입니다.

참고 항목

이 단계를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 또한 배포가 완료된 시점과 봇을 테스트할 수 있는 시점 사이에 몇 분 정도 더 걸릴 수 있습니다.

명령줄에서 다음 명령을 실행하여 앱 서비스(웹앱)에 Kudu zip 푸시 배포를 사용하여 배포를 수행합니다.

az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-app-service>" --src "<project-zip-path>"
옵션 설명
resource-group 봇을 포함하는 Azure 리소스 그룹의 이름입니다.
name 이전에 사용한 앱 서비스의 이름입니다.
src 만든 압축된 프로젝트 파일의 절대 또는 상대 경로입니다.

기본적으로 이 명령은 프로덕션 슬롯에 배포됩니다. 선택적 --slot 매개 변수를 사용하여 다른 슬롯을 지정합니다. 자세한 내용은 az webapp deployment source config-zip 명령 참조를 참조하세요.

웹 채팅에서 테스트

  1. 브라우저에서 Azure Portal이동합니다.
  2. 봇 리소스로 이동합니다.
  3. 웹 채팅 창에서 테스트를 엽니다.
  4. 배포된 봇과 상호 작용합니다.

봇 등록에 대한 자세한 내용은 Bot Service에 봇 등록을 참조 하세요.

리소스 정리

이 애플리케이션을 게시하지 않을 경우 다음 단계를 사용하여 연결된 리소스를 삭제합니다.

  1. Azure Portal에서 봇의 리소스 그룹을 엽니다.
    1. 리소스 그룹 삭제를 선택하여 그룹 및 그룹에 포함된 모든 리소스를 삭제합니다.
    2. 확인 창에 리소스 그룹 이름을 입력한 다음 삭제를 선택합니다.
  2. 단일 테넌트 또는 다중 테넌트 앱을 만든 경우:
    1. Microsoft Entra ID 블레이드로 이동합니다.
    2. 봇에 사용한 앱 등록을 찾아 삭제합니다.

추가 리소스

봇을 호스트하는 데 사용되는 Azure 애플리케이션 및 리소스에 대한 자세한 내용은 다음 문서를 참조하세요.

Subject 문서
Azure CLI Azure CLI란?
Azure 구독 관리 Azure CLI를 사용하여 Azure 구독을 관리하는 방법
Azure 지역 영역 및 가용성 영역
리소스 그룹 및 리소스 관리 Azure 리소스 관리
관리 ID Azure 리소스에 대한 관리 ID란?
단일 테넌트 및 다중 테넌트 앱 Microsoft Entra ID의 테넌트
웹 애플리케이션 App Service
웹 애플리케이션에 대한 컴퓨팅 리소스 App Service 계획
ARM 템플릿(Azure Resource Manager 템플릿) ARM 템플릿이란? Azure CLI에서 ARM(Azure Resource Manager) 배포 템플릿을 사용하는 방법
Azure 청구 청구 및 비용 관리

Kudu 파일

웹앱 배포 명령은 Kudu를 사용하여 C#, JavaScript 및 Python 봇을 배포합니다. 구성되지 않은 zip 배포 API 를 사용하여 봇의 코드를 배포하는 경우 동작은 다음과 같습니다.

Kudu는 기본적으로 .zip 파일의 배포를 실행할 준비가 되었으며 npm 설치 또는 dotnet restore/dotnet 게시와 같은 배포 중에 추가 빌드 단계가 필요하지 않다고 가정합니다.

배포 중인 zip 파일에 필요한 모든 종속성을 사용하여 빌드된 코드를 포함하는 것이 중요합니다. 그렇지 않으면 봇이 의도한 대로 작동하지 않습니다. 자세한 내용은 App Service에 파일을 배포하는 방법에 대한 Azure 설명서를 참조하세요.

다음 단계