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

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

Подготовка с помощью набора средств Microsoft Teams в Microsoft Visual Studio Code

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

Примечание.

Службы Azure несут затраты на подписку. Дополнительные сведения об оценке затрат см. в статье Калькулятор цен.

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

В следующем списке показаны действия, предназначенные для подготовки.

teamsApp/create

Что это такое

Если переменная среды, в которой хранится идентификатор приложения Teams, пуста или идентификатор приложения не найден на портале разработчика 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. Он использует идентификатор приложения в файле 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

Что это такое

Это действие отображает шаблон манифеста приложения с переменными среды и проверяет файл манифеста приложения с использованием его схемы.

Какой ресурс он использует

Недоступно

Как использовать эту возможность

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

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

Что это такое

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

Какой ресурс он использует

Н/Д

Как использовать эту возможность

- uses: teamsApp/zipAppPackage
    with:
      # Required. Relative path to the yaml file. This is the path for 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

Что это такое

Это действие публикует zip-файл встроенного приложения Teams в каталоге приложений клиента.

Какой ресурс он использует

Приложение 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

Что это такое

Это действие создает новое приложение 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

Что это такое

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

Какой ресурс он использует

Microsoft Entra ID в клиенте 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

Что это такое

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

Какой ресурс он использует

Microsoft Entra ID в клиенте Microsoft 365.

Как использовать эту возможность

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

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

Что это такое

Это действие включает параметр статического веб-сайта в службе хранилища 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>

azureStaticWebApps/getDeploymentToken

Что это такое

Это действие извлекает маркер развертывания из Статические веб-приложения Azure.

Сведения о версии

версия 1.4

Какой ресурс он использует

Статические веб-приложения Azure.

Как использовать эту возможность

- uses: azureStaticWebApps/getDeploymentToken
    with:
      resourceId: ${{AZURE_STATIC_WEB_APPS_RESOURCE_ID}}
    writeToEnvironmentFile:
      deploymentToken: SECRET_TAB_SWA_DEPLOYMENT_TOKEN

Сценарий

Что это такое

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

Какой ресурс он использует

Недоступно

Как использовать эту возможность

- 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, манифесте приложения, 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 Resource Manager.

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

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

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

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

  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>
      

Примечание.

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

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

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

  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>
      

Примечание.

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

Дополнительные ресурсы

Развертывание приложения Teams в облаке