Подготовка облачных ресурсов в Microsoft Visual Studio
TeamsFx интегрируется с Azure и облаком Microsoft 365, что позволяет разместить приложение в Azure с помощью одной команды. TeamsFx интегрируется с Azure Resource Manager (ARM), что позволяет подготавливать ресурсы Azure, необходимые приложению для подхода к коду.
Вход в учетную запись Azure
Откройте Visual Studio.
Откройте проект приложения Microsoft Teams.
Выберите Project Teams Toolkit Provision (Подготовканабора средств>Project> Teams) в облаке.
Выберите Войти....
Примечание.
Если вы уже вошли в систему, отобразится ваше имя пользователя или у вас есть параметр Добавить учетную запись.
После входа в учетную запись Azure с помощью учетных данных браузер автоматически закрывается.
Подготовка облачных ресурсов
После открытия проекта в Visual Studio для подготовки облачных ресурсов выполните следующие действия.
Выберите Project Teams Toolkit Provision (Подготовканабора средств>Project> Teams) в облаке....
Откроется окно Подготовка .
Введите следующие сведения для подготовки ресурсов:
- Выберите имя подписки в раскрывающемся меню.
- Выберите свою группу ресурсов в раскрывающемся меню или создайте новую группу ресурсов , выбрав Создать....
- Выберите регион в раскрывающемся меню.
- Выберите Подготовка.
Во всплывающем окне выберите Подготовить.
Процесс подготовки создает ресурсы в облаке Azure. Ход выполнения можно отслеживать, просматривая окно выходных данных набора средств Microsoft Teams.
Во появившемся всплывающем окне выберите Просмотреть подготовленные ресурсы, чтобы просмотреть все подготовленные ресурсы.
Действия по подготовке
Для подготовки предназначены следующие действия:
- teamsApp/create
- teamsApp/update
- teamsApp/validateManifest
- teamsApp/validateAppPackage
- teamsApp/zipAppPackage
- teamsApp/publishAppPackage
- aadApp/create
- aadApp/update
- botAadApp/create
- arm/deploy
- azureStorage/enableStaticWebsite
- сценарий
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_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 и управлять всеми ресурсами, созданными с помощью набора средств Teams.
- Вы можете выбрать группу ресурсов из существующего списка или новой созданной группы ресурсов.
- Сведения о выбранной группе ресурсов можно просмотреть в разделе обзора оглавлении.
Настройка приложений Teams
Вы можете настроить бота или приложение Teams, добавив переменные среды для использования созданного приложения Microsoft Entra. Приложение Teams можно настроить следующими способами:
- Использование существующего приложения Microsoft Entra для приложения Teams
- Использование существующего приложения Microsoft Entra для бота
Использование существующего приложения Microsoft Entra для приложения Teams
Чтобы использовать приложение Microsoft Entra, созданное для приложения Teams, и добавить переменные среды в ENV-файлы, выполните следующие действия.
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>
Если у вас еще нет приложения Microsoft Entra или вы его, но не знаете, где найти правильное значение, см. статью Использование существующего приложения Microsoft Entra в проекте TeamsFx.
Примечание.
- Не забудьте обновить имена переменных среды в примерах, если вы используете другие имена в
writeToEnvironmentFile
. - Если вы не используете
aadApp/create
действие для создания приложения Microsoft Entra, вы можете добавить необходимые переменные среды с предпочитаемым именем, не выполнив описанные выше действия. - Убедитесь, что вы не совместно используют одно и то же приложение Microsoft Entra в нескольких средах.
Использование существующего приложения Microsoft Entra для бота
Вы можете выполнить действия по добавлению переменных среды в ENV-файлы, чтобы использовать приложение Microsoft Entra, созданное для приложения Teams.
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>
Если у вас еще нет приложения Microsoft Entra для бота или вы не знаете, где найти правильные значения, см. статью Использование существующего приложения Microsoft Entra в проекте TeamsFx.
Примечание.
- Не забудьте обновить имена переменных среды в примерах, если вы используете другие имена в
writeToEnvironmentFile
. - Если вы не используете
botAadApp/create
действие для создания приложения Microsoft Entra, вы можете добавить необходимые переменные среды с предпочитаемым именем, не выполнив описанные выше действия. - Убедитесь, что одно и то же приложение Microsoft Entra не будет совместно использовать в нескольких средах.
См. также
Platform Docs