Подготовка облачных ресурсов
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 в клиенте 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 в клиенте 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 в клиенте 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_ID
subscriptionId
среды :
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 для бота
Использование существующего приложения Microsoft Entra для приложения Teams
Вы можете выполнить действия по добавлению переменных среды в ENV-файлы, чтобы использовать приложение Microsoft Entra, созданное для приложения Teams. Если у вас еще нет приложения Microsoft Entra или оно у вас уже есть, но вы не знаете, где найти правильное значение, ознакомьтесь с тем, как использовать существующее приложение Microsoft Entra в проекте TeamsFx.
Откройте
teamsapp.yml
и найдитеaadApp/create
действие.Найдите имена переменных среды, в которые хранятся сведения для приложения 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
Добавьте значения для каждой переменной среды из шага 2.
Добавьте следующие переменные среды и их значения в
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
Если приложению требуется секрет клиента приложения 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 для бота
Вы можете выполнить действия по добавлению переменных среды в ENV-файлы, чтобы использовать приложение Microsoft Entra, созданное для приложения Teams. Если у вас еще нет приложения Microsoft Entra для бота или оно у вас уже есть, но вы не знаете, где найти правильные значения, см. статью Использование существующего приложения Microsoft Entra в проекте TeamsFx.
Откройте
teamsapp.yml
и найдитеbotAadApp/create
действие.Найдите имена переменных среды, в которые хранятся сведения для приложения Microsoft Entra, в свойстве
writeToEnvironmentFile
. Если вы создаете проекты с помощью набора средств Teams, по умолчаниюwriteToEnvironmentFile
используется следующее определение:writeToEnvironmentFile: botId: BOT_ID botPassword: SECRET_BOT_PASSWORD
Добавьте значения для каждой переменной среды из шага 2.
Добавьте следующую переменную среды и ее значение в
env\.env.{env}
файл.BOT_ID=<value of Microsoft Entra application's client id (application id)> # example: 00000000-0000-0000-0000-000000000000
Добавьте следующую переменную среды и ее значение в
env\.env.{env}.user
файл.SECRET_BOT_PASSWORD=<value of Microsoft Entra application's client secret>
Примечание.
- Не забудьте обновить имена переменных среды в примерах, если вы используете другие имена в
writeToEnvironmentFile
. - Если вы не используете
botAadApp/create
действие для создания приложения Microsoft Entra, вы можете добавить необходимые переменные среды с предпочитаемым именем, не выполнив описанные выше действия. - Не предоставлять общий доступ к одному и тому же приложению Microsoft Entra в нескольких средах.
Дополнительные ресурсы
Platform Docs