Поделиться через


Подготовка облачных ресурсов в Microsoft Visual Studio

TeamsFx интегрируется с Azure и облаком Microsoft 365, что позволяет разместить приложение в Azure с помощью одной команды. TeamsFx интегрируется с Azure Resource Manager (ARM), что позволяет подготавливать ресурсы Azure, необходимые приложению для подхода к коду.

Вход в учетную запись Azure

  1. Откройте Visual Studio.

  2. Откройте проект приложения Microsoft Teams.

  3. Выберите Project Teams Toolkit Provision (Подготовканабора средств>Project> Teams) в облаке.

    Снимок экрана: вход в учетную запись Azure.

  4. Выберите Войти....

    Снимок экрана: вход в учетную запись Azure.

    Примечание.

    Если вы уже вошли в систему, отобразится ваше имя пользователя или у вас есть параметр Добавить учетную запись.

    После входа в учетную запись Azure с помощью учетных данных браузер автоматически закрывается.

Подготовка облачных ресурсов

После открытия проекта в Visual Studio для подготовки облачных ресурсов выполните следующие действия.

  1. Выберите Project Teams Toolkit Provision (Подготовканабора средств>Project> Teams) в облаке....

    Снимок экрана: подготовка в облаке.

    Откроется окно Подготовка .

  2. Введите следующие сведения для подготовки ресурсов:

    1. Выберите имя подписки в раскрывающемся меню.
    2. Выберите свою группу ресурсов в раскрывающемся меню или создайте новую группу ресурсов , выбрав Создать....
    3. Выберите регион в раскрывающемся меню.
    4. Выберите Подготовка.

    Снимок экрана: выбор группы ресурсов.

  3. Во всплывающем окне выберите Подготовить.

    Снимок экрана: предупреждение о подготовке.

    Процесс подготовки создает ресурсы в облаке Azure. Ход выполнения можно отслеживать, просматривая окно выходных данных набора средств Microsoft Teams.

  4. Во появившемся всплывающем окне выберите Просмотреть подготовленные ресурсы, чтобы просмотреть все подготовленные ресурсы.

    Снимок экрана: подготовленные ресурсы.

Действия по подготовке

Для подготовки предназначены следующие действия:

teamsApp/create

Если переменная среды, в которой хранится идентификатор приложения Teams, пуста или идентификатор приложения не найден на портале teamsApp/create разработчика Teams, то действие создает новое приложение Teams. Он работает с приложением Teams на портале разработчика Teams.

  - uses: teamsApp/create
    with: 
      # #required. Name of Teams app
      name: <your-preferred-app-name>
      # Write the information of created resources into environment file for the specified environment variable(s).
    writeToEnvironmentFile:
      # The id for Teams app
      teamsAppId: <your-preferred-env-var-name>

teamsApp/update

При применении манифеста приложения Teams к существующему приложению Teams на портале разработчика Teams. teamsApp/update Action использует идентификатор приложения в файле manifest.json, чтобы определить, какое приложение Teams следует обновить. Он работает с приложением Teams на портале разработчика Teams.

- uses: teamsApp/update
    with:
      # Required. Relative path to the yaml file. This is the path for built zip file.
      appPackagePath: <path-to-teams-app-package-file>

teamsApp/validateManifest

Действие teamsApp/validateManifest отрисовывает шаблон манифеста приложения Teams с переменными среды и проверяет файл манифеста приложения Teams по его схеме.

- uses: teamsApp/validateManifest
    with:
      # Required. Relative path to the yaml file. Path to Teams app manifest file
    manifestPath: <path-to-manifest-file>

teamsApp/validateAppPackage

Действие teamsApp/validateAppPackage проверяет пакет приложения Teams с помощью правил проверки.

  - uses: teamsApp/validateAppPackage
      with:
      # Required. Relative path to the yaml file. This is the path for built zip file.
    appPackagePath: <path-to-teams-app-package-file>

teamsApp/zipAppPackage

Действие teamsApp/zipAppPackage отображает шаблон манифеста приложения Teams с переменными среды и сжимает файл манифеста с двумя значками в ZIP-файл.

- uses: teamsApp/zipAppPackage
    with:
      # Required. Relative path to the yaml file. This is the path for Teams app manifest file. Environment variables in manifest will be replaced before apply to Microsoft Entra app.
    manifestPath: <path-to-manifest-file>
      # Required. Relative path to the yaml file. This is the path for built zip file.
    outputZipPath: <path-to-generated-zip-file>
      # Required. Relative path to the yaml file. This is the path for built manifest json file.
    outputJsonPath: <path-to-generated-json-file>

teamsApp/publishAppPackage

Действие teamsApp/publishAppPackage публикует zip-файл созданного приложения Teams в каталоге приложений клиента. Он работает в каталоге приложений клиента Microsoft 365.

- uses: teamsApp/publishAppPackage
    with:
      # Required. Relative path to this file. This is the path for built zip file.
    appPackagePath: <path-to-teams-app-package>
    # Write the information of created resources into environment file for the specified environment variable(s).
    writeToEnvironmentFile:
      # The Teams app id in tenant app catalog.
    publishedAppId: <your-preferred-env-var-name>

aadApp/create

Действие aadApp/create создает новое приложение Microsoft Entra для проверки подлинности пользователей, если переменная среды, в которой clientId хранится, пуста. Он работает в microsoft Entra ID в клиенте Microsoft 365.

- uses: aadApp/create
    with:
      # Required. The Microsoft Entra app's display name. When you run aadApp/update, the Microsoft Entra app name will be updated based on the definition in manifest. If you don't want to change the name, make sure the name in Microsoft Entra app manifest is the same with the name defined here.
      name: <your-application-name>
      # Required. If the value is false, the action will not generate client secret for you
      generateClientSecret: true
      # Required. Specifies what Microsoft accounts are supported for the current application. Supported values are: `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount`, `PersonalMicrosoftAccount`.
      signInAudience: "AzureADMyOrg"
    # Write the information of created resources into environment file for the specified environment variable(s).
    writeToEnvironmentFile:
      # Required. The client (application) ID of Microsoft Entra application. The action will refer the environment variable defined here to determine whether to create a new Microsoft Entra app.
      clientId: <your-preferred-env-var-name>
      # Required when `generateClientSecret` is `true`. The action will refer the environment variable defined here to determine whether to create a new client secret. It's recommended to add `SECRET_` prefix to the environment variable name so it will be stored to the .env.{envName}.user environment file.
      clientSecret: <your-preferred-env-var-name>
      # Required. The object ID of Microsoft Entra application
      objectId: <your-preferred-env-var-name>
      # Optional. The tenant ID of Microsoft Entra tenant
      tenantId: <your-preferred-env-var-name>
      # Optional. The Microsoft Entra authority
      authority: <your-preferred-env-var-name>
      # Optional. The host name of Microsoft Entra authority
      authorityHost: <your-preferred-env-var-name>

aadApp/update

aadApp/update действие обновляет приложение Microsoft Entra на основе манифеста приложения Microsoft Entra. Он ссылается на свойство ID в манифесте приложения Microsoft Entra, чтобы определить, какое приложение Microsoft Entra следует обновить. aadApp/update работает с идентификатором Microsoft Entra в клиенте Microsoft 365.

- uses: aadApp/update
    with:
      # Required. Relative path to the yaml file. Path to the Microsoft Entra app manifest. Environment variables in manifest will be replaced before apply to Microsoft Entra app.
      manifestPath: <path-to-manifest-file>
      # Required. Relative path to the yaml folder. This action will output the final Microsoft Entra app manifest used to update Microsoft Entra app to this path.
      outputFilePath : <path-to-output-file>

botAadApp/create

Действие botAadApp/create создает новое или повторно использует существующее приложение Microsoft Entra для бота. Он работает с идентификатором Microsoft Entra в клиенте Microsoft 365.

- uses: botAadApp/create
    with:
      # Required. The Microsoft Entra app's display name
      name: <your-app-name>
    writeToEnvironmentFile:
      # The The Microsoft Entra app's client id created for bot.
      botId: <your-preferred-env-var-name>
      # The The Microsoft Entra app's client secret created for bot. 
      botPassword: <your-preferred-env-var-name>

arm/deploy

Действие arm/deploy развертывает заданные шаблоны ARM параллельно. Он работает в подписке Azure.

- uses: arm/deploy
    with:
      # Required. You can use built-in environment variable `AZURE_SUBSCRIPTION_ID` here. TeamsFx will ask you select one subscription if its value is empty. You're free to reference other environment variable here, but TeamsFx will not ask you to select subscription if it's empty in this case.
      subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
      # Required. You can use built-in environment variable `AZURE_RESOURCE_GROUP_NAME` here. TeamsFx will ask you to select or create one resource group if its value is empty. You're free to reference other environment variable here, but TeamsFx will not ask you to select or create resource group if it's empty in this case.
      resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
      # Required. The ARM templates to be deployed.
      templates:
        # Required. Relative path to the yaml file.
      - path: <path-to-arm-template>
        # Optional. Relative path to the yaml file. TeamsFx will replace the environment variable reference with real value before deploy ARM template.
        parameters: <path-to-arm-template-parameter>
        # Required. Name of the ARM template deployment.
        deploymentName: <arm-deployment-name>
      # Optional. Teams Toolkit will download this bicep CLI version from github for you, will use bicep CLI in PATH if you remove this config.
      bicepCliVersion: v0.9.1

azureStorage/enableStaticWebsite

Это azureStorage/enableStaticWebsite действие включает параметр статического веб-сайта в службе хранилища Azure. Он работает в службе хранилища Azure.

- uses: azureStorage/enableStaticWebsite
    with:
      # Required. The resource id of Azure Storage
      storageResourceId: ${{<env-name-of-azure-storage-resource-id>}}
      # Required. The path to index page.
      indexPage: <path-to-index-page>
      # Required. The path to error page.
      errorPage: <path-to-error-page>

сценарий

Действие script выполняет определяемый пользователем скрипт.

- uses: script
    with:
     # Required. Command to run or path to the script. Succeeds if exit code is 0. '::set-teamsfx-env key=value' is a special command to generate output variables into .env file, in this case, "mykey=abc" will be added the output in the corresponding .env file.
     run: $my_key="abc"; echo "::set-teamsfx-env mykey=${my_key}"
     # Optional. Available values are: bash, sh, powershell(Powershell Desktop), pwsh(powershell core), cmd. If omitted, it defaults to bash on Linux/MacOS, defaults to pwsh on windows.
     shell: <shell-name>
     # Optional. Current working directory. Defaults to the directory of this file.
     workingDirectory: <working-directory>
     # Optional. Timeout in ms.
     timeout: <timeout-in-ms>
     # Optional. Redirect stdout and stderr to a file.
     redirectTo: <path-to-output-file>

Настройка подготовки ресурсов

Шаги подготовки teamsapp.yml определяются в файле в свойстве provision . Вы можете добавлять, удалять или обновлять действия в свойстве provision , чтобы определить ожидаемые действия, которые необходимо выполнить во время подготовки.

Ссылочные переменные среды в файлах параметров

Набор средств Teams поддерживает ссылки на значения из переменных среды в teamsapp.yml файле, манифесте приложения Teams, манифесте приложения Microsoft Entra и файлах параметров Azure. Для ссылки на переменные среды можно использовать синтаксис ${{ENV_VARIABLE_NAME}} .

В следующем примере задается значение переменной MY_AZURE_SUBSCRIPTION_IDsubscriptionIdсреды :

subscriptionId: ${{MY_AZURE_SUBSCRIPTION_ID}}

Настройка файлов шаблонов ARM

Если стандартные шаблоны не соответствуют требованиям приложения, вы можете создать собственный шаблон ARM или обновить существующий шаблон ARM и указать путь к arm/deploy действию следующим образом:

- uses: arm/deploy
    with:
      subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
      resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
      templates:
      - path: <path-to-your-arm-template>
        parameters: <path-to-your-parameter-file>
        deploymentName: <arm-deployment-name>
      bicepCliVersion: <bicep-cli-version>

Действие arm/deploy поддерживает шаблоны ARM, написанные в формате bicep и json. Если используется формат JSON, параметр можно опустить bicepCliVersion . Необходимо иметь базовые знания Об Azure Resource Manager. Дополнительные сведения см. в документации по Azure Resource Manager.

Управление ресурсами

Вы можете войти на портал Azure и управлять всеми ресурсами, созданными с помощью набора средств Teams.

  • Вы можете выбрать группу ресурсов из существующего списка или новой созданной группы ресурсов.
  • Сведения о выбранной группе ресурсов можно просмотреть в разделе обзора оглавлении.

Настройка приложений Teams

Вы можете настроить бота или приложение Teams, добавив переменные среды для использования созданного приложения Microsoft Entra. Приложение Teams можно настроить следующими способами:

Использование существующего приложения Microsoft Entra для приложения Teams

Чтобы использовать приложение Microsoft Entra, созданное для приложения Teams, и добавить переменные среды в ENV-файлы, выполните следующие действия.

  1. teamsapp.yml Откройте файл и найдите aadApp/create действие.

  2. Найдите имена переменных среды, в которые хранятся сведения для приложения Microsoft Entra, в свойстве writeToEnvironmentFile . Если вы создаете проекты с помощью Набора средств Teams, по умолчанию writeToenvironmentFile используется следующее определение свойства:

     writeToEnvironmentFile:
      clientId: AAD_APP_CLIENT_ID
      clientSecret: SECRET_AAD_APP_CLIENT_SECRET
      objectId: AAD_APP_OBJECT_ID
      tenantId: AAD_APP_TENANT_ID
      authority: AAD_APP_OAUTH_AUTHORITY
      authorityHost: AAD_APP_OAUTH_AUTHORITY_HOST
    
  3. Добавьте значения для каждой переменной среды из шага 2.

    1. Добавьте следующие переменные среды и их значения в env\.env.{env} файл. Например:

       AAD_APP_CLIENT_ID=<value of Microsoft Entra application's client id (application id)> # example: 00000000-0000-0000-0000-000000000000
       AAD_APP_OBJECT_ID=<value of Microsoft Entra application's object id> # example: 00000000-0000-0000-0000-000000000000
       AAD_APP_TENANT_ID=<value of Microsoft Entra's (tenant) id>> # example: 00000000-0000-0000-0000-000000000000
       AAD_APP_OAUTH_AUTHORITY=<value of Microsoft Entra's authority> # example: https://login.microsoftonline.com/<Directory (tenant) ID>
       AAD_APP_OAUTH_AUTHORITY_HOST=<host of Microsoft Entra's authority> # example: https://login.microsoftonline.com
       AAD_APP_ACCESS_AS_USER_PERMISSION_ID=<id of access_as_user permission> # example: 00000000-0000-0000-0000-000000000000
      
    2. Если приложению требуется секрет клиента приложения Microsoft Entra, добавьте следующую переменную среды и ее значение в env\.env.{env}.user файл. Например:

      SECRET_AAD_APP_CLIENT_SECRET=<value of Microsoft Entra application's client secret>
      

Если у вас еще нет приложения Microsoft Entra или вы его, но не знаете, где найти правильное значение, см. статью Использование существующего приложения Microsoft Entra в проекте TeamsFx.

Примечание.

  • Не забудьте обновить имена переменных среды в примерах, если вы используете другие имена в writeToEnvironmentFile.
  • Если вы не используете aadApp/create действие для создания приложения Microsoft Entra, вы можете добавить необходимые переменные среды с предпочитаемым именем, не выполнив описанные выше действия.
  • Убедитесь, что вы не совместно используют одно и то же приложение Microsoft Entra в нескольких средах.

Использование существующего приложения Microsoft Entra для бота

Вы можете выполнить действия по добавлению переменных среды в ENV-файлы, чтобы использовать приложение Microsoft Entra, созданное для приложения Teams.

  1. teamsapp.yml Откройте файл и найдите botAadApp/create действие.

  2. Найдите имена переменных среды, в которые хранятся сведения для приложения Microsoft Entra, в свойстве writeToEnvironmentFile . Если вы создаете проекты с помощью набора средств Teams, по умолчанию writeToEnvironmentFile используется следующее определение:

     writeToEnvironmentFile:
       botId: BOT_ID
       botPassword: SECRET_BOT_PASSWORD
    
  3. Добавьте значения для каждой переменной среды из шага 2.

    1. Добавьте переменную среды и ее значение в env\.env.{env} файл. Например:

      BOT_ID=<value of Microsoft Entra application's client id (application id)> # example: 00000000-0000-0000-0000-000000000000    
      
    2. Добавьте переменную среды и ее значение в env\.env.{env}.user файл. Например:

      SECRET_BOT_PASSWORD=<value of Microsoft Entra application's client secret>
      

Если у вас еще нет приложения Microsoft Entra для бота или вы не знаете, где найти правильные значения, см. статью Использование существующего приложения Microsoft Entra в проекте TeamsFx.

Примечание.

  • Не забудьте обновить имена переменных среды в примерах, если вы используете другие имена в writeToEnvironmentFile.
  • Если вы не используете botAadApp/create действие для создания приложения Microsoft Entra, вы можете добавить необходимые переменные среды с предпочитаемым именем, не выполнив описанные выше действия.
  • Убедитесь, что одно и то же приложение Microsoft Entra не будет совместно использовать в нескольких средах.

См. также