Облачная Автоматизация на основе событий в AzureEvent-based cloud automation on Azure

Автоматизация рабочих процессов и повторяющихся задач в облаке с помощью бессерверных технологийможет значительно повысить производительность группы DevOps Организации.Automating workflows and repetitive tasks on the cloud using serverless technologies, can dramatically improve productivity of an organization's DevOps team. Бессерверная модель лучше всего подходит для сценариев автоматизации, которые соответствуют подходу, управляемому событиями.A serverless model is best suited for automation scenarios that fit an event driven approach. В этой эталонной архитектуре показаны два таких сценария автоматизации в облаке:This reference architecture illustrates two such cloud automation scenarios:

  1. Теги в центре затрат. Эта реализация отслеживает центры затрат для каждого ресурса Azure.Cost center tagging: This implementation tracks the cost centers of each Azure resource. Служба политики Azure помечает все новые ресурсы в группе с идентификатором центра затрат по умолчанию.The Azure Policy service tags all new resources in a group with a default cost center ID. Сетка событий отслеживает события создания ресурсов, а затем вызывает функцию Azure.The Event Grid monitors resource creation events, and then calls an Azure function. Функция взаимодействует с Azure Active Directory и проверяет идентификатор центра затрат для нового ресурса.The function interacts with Azure Active Directory, and validates the cost center ID for the new resource. Если он отличается, он обновляет тег и отправляет владельцу ресурса сообщение электронной почты.If different, it updates the tag and sends out an email to the resource owner. Запросы остальных для Azure Active Directory размещаются для простоты.The REST queries for Azure Active Directory are mocked out for simplicity. Azure AD также можно интегрировать с помощью модуля Azure AD PowerShell или библиотеки ADAL для Python.Azure AD can also be integrated using the Azure AD PowerShell module or the ADAL for Python library.

  2. Отклик регулирования. Эта реализация наблюдает за Cosmos DB базой данных для регулирования.Throttling response: This implementation monitors a Cosmos DB database for throttling. Azure Monitor оповещения запускаются, когда запросы на доступ к данным CosmosDB превышают емкость в единицах запроса (или в RUs).Azure Monitor alerts are triggered when data access requests to CosmosDB exceed the capacity in Request Units (or RUs). Группа действий Azure Monitor настроена для вызова функции автоматизации в ответ на эти предупреждения.An Azure Monitor action group is configured to call the automation function in response to these alerts. Функция масштабирует RUs до более высокого значения, увеличивая емкость и, в свою очередь, останавливает предупреждения.The function scales the RUs to a higher value, increasing the capacity and in turn stopping the alerts. Обратите внимание, что в качестве альтернативы этой реализации используется режим автопилота CosmosDB (Предварительная версия) .Note that the CosmosDB autopilot mode (Preview) is an alternative to this implementation.

Бессерверная автоматизация в облаке

Логотип GitHub . эталонные реализации для этой архитектуры доступны на сайте GitHub.GitHub logo The reference implementations for this architecture are available on GitHub.

Функции в этих реализациях написаны на PowerShell и Python, два из самых распространенных языков сценариев, используемых в автоматизации.The functions in these implementations are written in PowerShell and Python, two of the most common scripting languages used in automation. Они развертываются с помощью Azure functions Core Tools в Azure CLI.They are deployed using Azure Functions Core Tools in Azure CLI. Кроме того, вы можете использовать предварительную версию командлета PowerShell для развертывания функций Azure и управления ими.Alternatively, you can try a preview version of PowerShell cmdlet to deploy and manage Azure Functions.

Шаблоны в службе автоматизации на основе событийPatterns in event-based automation

Сценарии автоматизации на основе событий лучше реализовать с помощью функций Azure.Event-based automation scenarios are best implemented using Azure Functions. Они следуют следующим общим шаблонам:They follow these common patterns:

  • Реагирование на события ресурсов.Respond to events on resources. Это ответы на такие события, как ресурс или группа ресурсов Azure, созданные, удаленные, измененные и т. д.These are responses to events such as an Azure resource or resource group getting created, deleted, changed, and so on. Этот шаблон использует сетку событий для активации функции для таких событий.This pattern uses Event Grid to trigger the function for such events. Примером этого шаблона является реализация тегов в центре затрат.The cost center tagging implementation is an example of this pattern. Ниже приведены другие распространенные сценарии.Other common scenarios include:

    • предоставление группам DevOps доступа к только что созданным группам ресурсов;granting the DevOps teams access to newly created resource groups,
    • Отправка уведомления в DevOps при удалении ресурса иsending notification to the DevOps when a resource is deleted, and
    • реагирование на события обслуживания для таких ресурсов, как виртуальные машины Azure (ВМ).responding to maintenance events for resources such as Azure Virtual Machines (VMs).
  • Запланированные задачи.Scheduled tasks. Обычно это задачи обслуживания, выполняемые с помощью функций, запускаемых по таймеру.These are typically maintenance tasks executed using timer-triggered functions. Примеры этого шаблона:Examples of this pattern are:

    • Остановка виртуальной машины в ночное время, начиная с утра;stopping a VM at night, and starting in the morning,
    • чтение содержимого хранилища BLOB-объектов через регулярные интервалы и преобразование в Cosmos DB документreading Blob Storage content at regular intervals, and converting to a Cosmos DB document,
    • периодическое сканирование для ресурсов, которые больше не используются и удаляются, иperiodically scanning for resources no longer in use, and removing them, and
    • Автоматическое резервное копирование.automated backups.
  • Обработка оповещений Azure.Process Azure alerts. Этот шаблон использует простоту интеграции Azure Monitor оповещений и групп действий с помощью функций Azure.This pattern leverages the ease of integrating Azure Monitor alerts and action groups with Azure Functions. Эта функция обычно выполняет действия по исправлению в ответ на метрики, log Analytics и оповещения, происходящие в приложениях, а также в инфраструктуре.The function typically takes remedial actions in response to metrics, log analytics, and alerts originating in the applications as well as the infrastructure. Примером этого шаблона является реализация реагирования на регулирование.The throttling response implementation is an example of this pattern. Ниже приведены другие распространенные сценарии.Other common scenarios are:

    • усечение таблицы, когда база данных SQL достигает максимального размера,truncating the table when SQL Database reaches maximum size,
    • перезапуск службы на виртуальной машине, когда она ошибочно остановлена, иrestarting a service in a VM when it is erroneously stopped, and
    • Отправка уведомлений при сбое функции.sending notifications if a function is failing.
  • Управление внешними системами.Orchestrate with external systems. Этот шаблон обеспечивает интеграцию с внешними системами, используя Logic Apps для управления рабочим процессом.This pattern enables integration with external systems, using Logic Apps to orchestrate the workflow. Logic Apps соединители можно легко интегрировать с несколькими сторонними службами, а также со службами Майкрософт, такими как Office 365.Logic Apps connectors can easily integrate with several third-party services as well as Microsoft services such as Office 365. Функции Azure можно использовать для фактической автоматизации.Azure Functions can be used for the actual automation. Реализация тегов в центре затрат демонстрирует этот шаблон.The cost center tagging implementation demonstrates this pattern. Ниже приведены другие распространенные сценарии.Other common scenarios include:

    • наблюдение за ИТ процессами, такими как запросы на изменение или утверждения;monitoring IT processes such as change requests or approvals, and
    • Отправка уведомления по электронной почте при завершении задачи автоматизации.sending email notification when automation task is completed.
  • Предоставление в виде веб-перехватчика или API.Expose as a web hook or API. Задачи автоматизации, использующие функции Azure, можно интегрировать в сторонние приложения или даже в средства командной строки, предоставляя функцию в качестве веб-перехватчика или API с помощью триггера HTTP.Automation tasks using Azure Functions can be integrated into third-party applications or even command-line tools, by exposing the function as a web hook/API using an HTTP trigger. Для защиты внешнего доступа к функции доступны несколько методов проверки подлинности в PowerShell и Python.Multiple authentication methods are available in both PowerShell and Python to secure external access to the function. Автоматизация выполняется в ответ на внешние события конкретного приложения, например для интеграции с Power Apps или GitHub.The automation happens in response to the app-specific external events, for example, integration with power apps or GitHub. Ниже приведены распространенные сценарии.Common scenarios include:

    • Активация автоматизации для неудачной службы иtriggering automation for a failing service, and
    • подключение пользователей к ресурсам Организации.onboarding users to the organization's resources.
  • Создание интерфейса чатопс.Create ChatOps interface. Этот шаблон позволяет клиентам создавать операционные интерфейсы на основе разговора, а также выполнять функции и команды разработки и эксплуатации в интерактивном сотрудничестве с человеком.This pattern enables customers to create a chat-based operational interface, and run development and operations functions and commands in-line with human collaboration. Это можно интегрировать с платформой Azure Bot и использовать команды Microsoft Teams или временного резерва для развертывания, мониторинга, часто задаваемых вопросов и т. д.This can integrate with the Azure Bot Framework and use Microsoft Teams or Slack commands for deployment, monitoring, common questions, and so on. Интерфейс Чатопс создает систему в режиме реального времени для управления производственными инцидентами, при этом каждый шаг автоматически задокументирован в чате.A ChatOps interface creates a real-time system for managing production incidents, with each step documented automatically on the chat. Узнайте , как чатопс поможет вам DevOps более подробную информацию.Read How ChatOps can help you DevOps better for more information.

  • Гибридная Автоматизация.Hybrid automation. Этот шаблон использует гибридные подключения службы приложений Azure для установки программного компонента на локальном компьютере.This pattern uses the Azure App Service Hybrid Connections to install a software component on your local machine. Этот компонент обеспечивает безопасный доступ к ресурсам на этом компьютере.This component allows secure access to resources on that machine. Возможность управления гибридными средами в настоящее время доступна в системах на базе Windows с помощью функций PowerShell.The ability to manage hybrid environments is currently available on Windows-based systems using PowerShell functions. Ниже приведены распространенные сценарии.Common scenarios include:

    • Управление локальными компьютерами иmanaging your on-premises machines, and
    • Управление другими системами, находящимся за брандмауэром (например, локально SQL Server) через сервер переходов.managing other systems behind the firewall (for example, an on-premises SQL Server) through a jump server.

АрхитектураArchitecture

Архитектура состоит из следующих блоков:The architecture consists of the following blocks:

Функции Azure.Azure Functions. Функции Azure предоставляют управляемые событиями бессерверные функции вычислений в этой архитектуре.Azure Functions provide the event-driven, serverless compute capabilities in this architecture. Функция выполняет задачи автоматизации при срабатывании событий или предупреждений.A function performs automation tasks, when triggered by events or alerts. В эталонных реализациях вызывается функция с HTTP-запросом.In the reference implementations, a function is invoked with an HTTP request. Сложность кода должна быть минимальна путем разработки функции, которая не имеет состояния, и идемпотентными.Code complexity should be minimized, by developing the function that is stateless, and idempotent.

Несколько выполнений функции идемпотентными создают одинаковые результаты.Multiple executions of an idempotent function create the same results. Для поддержки идемпотентности масштабирование функции в сценарии регулирования является упрощенным.To maintain idempotency, the function scaling in the throttling scenario is kept simplistic. В реальной автоматизации, убедитесь, что масштабирование выполняется соответствующим образом.In real world automation, make sure to scale up or down appropriately.

Рекомендации по написанию функций см. в статье Оптимизация производительности и надежности функций Azure .Read the Optimize the performance and reliability of Azure Functions for best practices when writing your functions.

Logic Apps.Logic Apps. Logic Apps можно использовать для выполнения более простых задач, легко реализуемых с помощью встроенных соединителей.Logic Apps can be used to perform simpler tasks, easily implemented using the built-in connectors. Эти задачи могут варьироваться от уведомлений по электронной почте до интеграции с внешними приложениями управления.These tasks can range from email notifications, to integrating with external management applications. Сведения об использовании Logic Apps с приложениями сторонних производителей см. в статье Базовая интеграция Enterprise в Azure.To learn how to use Logic Apps with third-party applications, read basic enterprise integration in Azure.

Logic Apps не предоставляет кода или визуального конструктора с низким кодом , и его можно использовать в некоторых сценариях автоматизации.Logic Apps provides a no code or low code visual designer, and may be used alone in some automation scenarios. Прочтите это сравнение между функциями Azure и Logic Apps , чтобы узнать, какая служба может соответствовать вашему сценарию.Read this comparison between Azure Functions and Logic Apps to see which service can fit your scenario.

Сетка событий.Event Grid. Служба "Сетка событий" имеет встроенную поддержку событий из других служб Azure, а также пользовательские события (также называемые пользовательскими разделами).Event Grid has built-in support for events from other Azure services, as well as custom events (also called custom topics). Операционные события, такие как создание ресурсов, можно легко распространить на функцию автоматизации с помощью встроенного механизма сетки событий.Operational events such as resource creation can be easily propagated to the automation function, using the Event Grid's built-in mechanism.

Сетка событий упрощает автоматизацию на основе событий с помощью модели публикации и подписки, обеспечивая надежную автоматизацию событий, доставляемых по протоколу HTTP.Event Grid simplifies the event-based automation with a publish-subscribe model, allowing reliable automation for events delivered over HTTP.

Azure Monitor.Azure Monitor. Azure Monitor оповещения могут отслеживать критические условия и предпринимать корректирующие действия с помощью групп действий Azure Monitor.Azure Monitor alerts can monitor for critical conditions, and take corrective action using Azure Monitor action groups. Эти группы действий легко интегрируются с функциями Azure.These action groups are easily integrated with Azure Functions. Это полезно для отслеживания и исправления любых условий возникновения ошибок в инфраструктуре, таких как регулирование базы данных.This is useful to watch for and fix any error conditions in your infrastructure, such as database throttling.

Действие автоматизации.Automation action. Этот обширный блок представляет другие службы, с которыми может взаимодействовать функция, для предоставления функциональных возможностей автоматизации.This broad block represents other services that your function can interact with, to provide the automation functionality. Например, Azure Active Directory для проверки тегов как в первом сценарии или базы данных для инициализации, как во втором сценарии.For example, Azure Active Directory for tag validation as in the first scenario, or a database to provision as in the second scenario.

Рекомендации по обеспечению устойчивостиResiliency considerations

Функции AzureAzure Functions

Обработку времени ожидания HTTPHandle HTTP timeouts

Чтобы избежать истечения времени ожидания HTTP для более длительной задачи автоматизации, поочередно поместить это событие в служебную шинуи управлять фактической автоматизацией в другой функции.To avoid HTTP timeouts for a longer automation task, queue this event in a Service Bus, and handle the actual automation in another function. В сценарии автоматизации реагирования на регулирование показан этот шаблон, хотя фактическая Cosmos DBная подготовка единиц запросов осуществляется быстро.The throttling response automation scenario illustrates this pattern, even though the actual Cosmos DB RU provisioning is fast.

Надежность в функции автоматизации

Устойчивые функции, которые сохраняют состояние между вызовами, предоставляют альтернативу описанному выше подходу.Durable functions, which maintain state between invocations, provide an alternative to the above approach. В настоящее время они поддерживаются только в JavaScript и C#.These are currently supported only in JavaScript and C#.

Ошибки журналаLog failures

Рекомендуется записывать в журнал любые сбои при выполнении задач автоматизации.As a best practice, the function should log any failures in carrying out automation tasks. Это позволяет правильно устранять ошибки в условиях возникновения ошибок.This allows for proper troubleshooting of the error conditions. В эталонных реализациях используется Application Insights в качестве системы телеметрии.The reference implementations use the Application Insights as the telemetry system.

ПараллелизмConcurrency

Проверьте требование параллелизма для функции автоматизации.Verify the concurrency requirement for your automation function. Параллелизм ограничивается установкой переменной maxConcurrentRequests в файле Host. JSON.Concurrency is limited by setting the variable maxConcurrentRequests in the file host.json. Этот параметр ограничивает количество одновременных экземпляров функций, выполняемых в приложении функции.This setting limits the number of concurrent function instances running in your function app. Поскольку каждый экземпляр потребляет ресурсы ЦП и памяти, это значение необходимо скорректировать для ресурсоемких операций.Since every instance consumes CPU and memory, this value needs to be adjusted for CPU-intensive operations. Уменьшите значение, maxConcurrentRequests если вызовы функций слишком замедляются или не могут завершиться.Lower the maxConcurrentRequests if your function calls appear to be too slow or aren't able to complete. Дополнительные сведения см. в разделе Настройка поведения узла для более эффективного обработки параллелизма .See the section Configure host behaviors to better handle concurrency for more details.

ИдемпотентностьIdempotency

Убедитесь, что функция автоматизации — идемпотентными.Make sure your automation function is idempotent. Как Azure Monitor, так и сетка событий могут выдавать предупреждения или события, указывающие на ход выполнения, например разрешениеподписанного события, его запуск, выполнениеи т. д., ваш ресурс будет подготовлен, успешно создани т. д. или даже отправлять ложные предупреждения из-за неправильной настройки.Both Azure Monitor and Event Grid may emit alerts or events that indicate progression such as your subscribed event is resolved, fired, in progress, etc., your resource is being provisioned, created successfully, etc., or even send false alerts due to a misconfiguration. Убедитесь, что функция работает только с соответствующими предупреждениями и событиями, и игнорирует все остальные, чтобы нежелательные результаты не приводили к ложным или неправильно настроенным событиям.Make sure your function acts only on the relevant alerts and events, and ignores all others, so that false or misconfigured events do not cause unwanted results. Дополнительные сведения см. в этой записи блога по шаблонам идемпотентности.For more information, read this blog post on idempotency patterns.

Сетка событий AzureEvent Grid

Если рабочий процесс использует сетку событий, проверьте, может ли ваш сценарий создать большое количество событий, достаточно clog сетку.If your workflow uses Event Grid, check if your scenario could generate a high volume of events, enough to clog the grid. См. раздел Доставка сообщений в сетке событий и повторите попытку, чтобы понять, как она обрабатывает события, когда доставка не подтверждена, и измените логику соответствующим образом.See Event Grid message delivery and retry to understand how it handles events when delivery isn't acknowledged, and modify your logic accordingly. Рабочий процесс центра затрат не реализует дополнительные проверки для этого, так как он наблюдает только за событиями создания ресурсов в группе ресурсов.The cost center workflow does not implement additional checks for this, since it only watches for resource creation events in a resource group. Мониторинг ресурсов, созданных во всей подписке, может создавать большое количество событий, что требует более устойчивой обработки.Monitoring resources created in an entire subscription, can generate larger number of events, requiring a more resilient handling.

Azure MonitorAzure Monitor

Если создается достаточно большое количество оповещений и служба автоматизации обновляет ресурсы Azure, то могут быть достигнуты ограничения регулирования Azure Resource Manager .If a sufficiently large number of alerts are generated, and the automation updates Azure resources, throttling limits of the Azure Resource Manager might be reached. Это может негативно повлиять на оставшуюся часть инфраструктуры в этой подписке.This can negatively affect the rest of the infrastructure in that subscription. Избегайте этой ситуации, ограничивая частоту предупреждений, создаваемых Azure Monitor.Avoid this situation by limiting the frequency of alerts getting generated by the Azure Monitor. Вы также можете ограничить предупреждения, созданные для конкретной ошибки.You may also limit the alerts getting generated for a particular error. Дополнительные сведения см. в документации по Azure Monitor предупреждения .Refer to the documentation on Azure Monitor alerts for more information.

Замечания по безопасностиSecurity considerations

Управление доступом к функцииControl access to the function

Ограничьте доступ к функции, активируемой HTTP, путем установки уровня авторизации.Restrict access to an HTTP-triggered function by setting the authorization level. При анонимной проверке подлинности функция легко доступна с URL-адресом, например http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME> .With anonymous authentication, the function is easily accessible with a URL such as http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Проверка подлинности на уровне функций может привести к маскировке конечной точки HTTP путем указания функциональных клавиш в URL-адресе.Function level authentication can obfuscate the http endpoint, by requiring function keys in the URL. Этот уровень задается в файле Function. JSON:This level is set in the file function.json:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    }
  ]
}

Для обеспечения безопасности функции в рабочей среде могут потребоваться дополнительные стратегии.For production environment, additional strategies might be required to secure the function. В эталонных реализациях функции выполняются на платформе Azure другими службами Azure и не будут доступны в Интернете.In the reference implementations, the functions are executed within the Azure platform by other Azure services, and will not be exposed to the internet. Для функций, доступных как веб-перехватчики, достаточно авторизации функции.Function authorization is sufficient for functions accessed as web hooks.

Рассмотрите возможность добавления уровней безопасности поверх функции проверки подлинности, например,Consider adding security layers on top of function authentication, such as,

  • Проверка подлинности с помощью сертификатов клиента илиauthenticating with client certificates, or
  • Убедитесь, что вызывающий объект является частью или имеет доступ к каталогу, в котором размещена эта функция, используя простую интеграцию с проверкой подлинности.making sure the caller is part of or has access to the directory that hosts the function, by using Easy Auth integration.

Обратите внимание, что для Azure Monitor групп действий доступен только режим проверки подлинности на уровне функций.Note that function-level authentication is the only option available to Azure Monitor action groups.

Если функция должна вызываться из стороннего приложения или службы, рекомендуется предоставить доступ к ней с помощью слоя управления API .If the function needs to be called from a third-party application or service, it is recommended to provide access to it with an API Management layer. Этот уровень должен обеспечивать проверку подлинности.This layer should enforce authentication. Служба управления API теперь имеет уровень потребления , интегрированный с функциями Azure, что позволяет платить только при выполнении API.API Management now has a consumption tier integrated with Azure Functions, which allows you to pay only if the API gets executed. Дополнительные сведения см. в статье Создание и предоставление функций с помощью OpenAPI.For more information, read Create and expose your functions with OpenAPI.

Если вызывающая служба поддерживает конечные точки службы, можно рассмотреть следующие параметры тем обходятся:If the calling service supports service endpoints, the following costlier options could be considered:

  • Используйте выделенный план службы приложений, в котором можно заблокировать функции в виртуальной сети, чтобы ограничить доступ к ней.Use a dedicated App Service plan, where you can lock down the functions in a virtual network to limit access to it. Это невозможно в бессерверной модели, основанной на потреблении.This is not possible in a consumption-based serverless model.
  • Используйте план "функции Azure" Premium, который включает выделенную виртуальную сеть, которая будет использоваться приложениями-функциями.Use the Azure Functions Premium plan, which includes a dedicated virtual network to be used by your function apps.

Чтобы сравнить цены и функции между этими вариантами, см. статью масштабирование и размещение функций Azure.To compare pricing and features between these options, read Azure Functions scale and hosting.

Управление тем, к чему может получить доступ функцияControl what the function can access

Управляемые удостоверения для ресурсов Azure, функции Azure Active Directory, упрощают проверку подлинности и доступ к другим ресурсам и службам Azure.Managed identities for Azure resources, an Azure Active Directory feature, simplifies how the function authenticates and accesses other Azure resources and services. Коду не требуется управлять учетными данными проверки подлинности, так как он управляется Azure AD.The code does not need to manage the authentication credentials, since it is managed by Azure AD.

Существует два типа управляемых удостоверений.There are two types of managed identities:

  • Управляемые удостоверения, назначенные системой: они создаются как часть ресурса Azure и не могут совместно использоваться несколькими ресурсами.System-assigned managed identities: These are created as part of the Azure resource, and cannot be shared among multiple resources. Они удаляются при удалении ресурса.These get deleted when the resource is deleted. Используйте их для сценариев, в которых задействованы отдельные ресурсы Azure или которые требуют независимых удостоверений.Use these for scenarios, which involve single Azure resource or which need independent identities. В обеих эталонных реализациях используются удостоверения, назначенные системой, так как они обновляют только один ресурс.Both the reference implementations use system-assigned identities since they update only a single resource. Управляемые удостоверения необходимы только для обновления другого ресурса.Managed identities are only required to update another resource. Например, функция может считывать Теги ресурсов без управляемого удостоверения.For example, a function can read the resource tags without a managed identity. Чтобы добавить в функцию удостоверение, назначенное системой, ознакомьтесь с этими инструкциями .See these instructions to add a system-assigned identity to your function.

  • Управляемые удостоверения, назначаемые пользователем. они создаются как автономные ресурсы Azure.User-assigned managed identities: These are created as stand-alone Azure resources. Они могут быть общими для нескольких ресурсов и должны быть удалены явным образом.These can be shared across multiple resources, and need to be explicitly deleted. Ознакомьтесь с этими инструкциями , чтобы добавить в функцию удостоверение, назначенное пользователем.Read these instructions on how to add user-assigned identity to your function. Используйте их для сценариев, которые:Use these for scenarios that:

    • Требуется доступ к нескольким ресурсам, которые могут совместно использовать одно удостоверение, илиRequire access to multiple resources that can share a single identity, or
    • Необходима предварительная авторизация для защиты ресурсов во время подготовки илиNeed pre-authorization to secure resources during provisioning, or
    • Наличие ресурсов, которые периодически перезапускаются, в то время как разрешения должны быть одинаковыми.Have resources that are recycled frequently, while permissions need to be consistent.

Когда удостоверение будет назначено функции Azure, назначьте ему роль с помощью управления доступом на основе ролей (RBAC) для доступа к ресурсам.Once the identity is assigned to the Azure function, assign it a role using role-based access control (RBAC) to access the resources. Например, для обновления ресурса роль участника должна быть назначена удостоверению функции.For example, to update a resource, the Contributor role will need to be assigned to the function identity.

Рекомендации по стоимостиCost considerations

Для оценки затрат используйте калькулятор цен Azure.Use the Azure pricing calculator to estimate costs. Ниже приведены некоторые рекомендации по снижению затрат.Here are some considerations for lowering cost.

Azure Logic AppsAzure Logic Apps

В Logic Apps есть модель ценообразования с оплатой по мере использования.Logic apps have a pay-as-you-go pricing model. Триггеры, действия и выполнения соединителей измеряются каждый раз при запуске приложения логики.Triggers, actions, and connector executions are metered each time a logic app runs. Все успешные и неудачные действия, включая триггеры, считаются выполнением.All successful and unsuccessful actions, including triggers, are considered as executions.

Приложения логики также имеют фиксированную модель ценообразования.Logic apps have also a fixed pricing model. Если необходимо запустить приложения логики, которые обмениваются данными с защищенными ресурсами в виртуальной сети Azure, их можно создать в Среда службы интеграции (ISE).If you need to run logic apps that communicate with secured resources in an Azure virtual network, you can create them in an Integration Service Environment (ISE).

Дополнительные сведения см. в разделе модель ценообразования для Azure Logic Apps.For details, see Pricing model for Azure Logic Apps.

В этой архитектуре приложения логики используются в сценарии использования тегов центра затрат для управления рабочим процессом.In this architecture, logic apps are used in the cost center tagging scenario to orchestrate the workflow.

Встроенные соединители используются для подключения к функциям Azure и отправки по электронной почте уведомления о завершении задачи автоматизации.Built-in connectors are used to connect to Azure Functions and send email notification an when an automation task is completed. Функции предоставляются в виде веб-перехватчика или API с помощью триггера HTTP.The functions are exposed as a web hook/API using an HTTP trigger. Logic Apps активируется только при возникновении запроса HTTPS.Logic apps are triggered only when an HTTPS request occurs. Это экономичный способ по сравнению с конструкцией, где функции постоянно опрашиваются и проверяют определенные критерии.This is a cost effective way when compared to a design where functions continuously poll and check for certain criteria. Каждый опрашивающий запрос измеряется как действие.Every polling request is metered as an action.

Дополнительные сведения см. на странице с ценами на Logic Apps.For more information, see Logic Apps pricing.

Функции AzureAzure Functions

Функции Azure доступны в следующих трех тарифных планах.Azure Functions are available with the following three pricing plans.

  • План потребления.Consumption plan. Это наиболее экономичный план бессерверного доступа, в котором вы платите только за время выполнения функции.This is the most cost-effective, serverless plan available, where you only pay for the time your function runs. В рамках этого плана функции могут выполняться не более чем на 10 минут за раз.Under this plan, functions can run for up to 10 minutes at a time.

  • План Premium.Premium plan. Используйте план "функции Azure Premium " для сценариев автоматизации с дополнительными требованиями, такими как Выделенная виртуальная сеть, длительное время выполнения и т. д.Consider using Azure Functions Premium plan for automation scenarios with additional requirements, such as a dedicated virtual network, a longer execution duration, and so on. Эти функции могут выполняться до часа и должны быть выбраны для более длительных задач автоматизации, таких как выполнение резервного копирования, индексирование базы данных или создание отчетов.These functions can run for up to an hour, and should be chosen for longer automation tasks such as running backups, database indexing, or generating reports.

  • План службы приложений.App Service plan. В сценариях гибридной автоматизации, использующих гибридные подключения службы приложений Azure, потребуется использовать план службы приложений.Hybrid automation scenarios that use the Azure App Service Hybrid Connections, will need to use the App Service plan. Функции, созданные в этом плане, могут выполняться в течение неограниченной длительности, аналогично веб-приложению.The functions created under this plan can run for unlimited duration, similar to a web app.

В этой архитектуре функции Azure используются для таких задач, как обновление тегов в Azure Active Directory или изменение конфигурации Cosmos DB путем увеличения значения параметра RUs до более высоких значений.In this architecture Azure Functions are used for tasks such as updating tags in Azure Active Directory, or changing cosmos DB configuration by scaling up the RUs to a higher value. План потребления подходит для этого варианта использования, так как эти задачи являются интерактивными и не переносятся.The Consumption plan is the appropriate for this use case because those tasks are interactive and not on going.

Azure Cosmos DBAzure Cosmos DB

Azure Cosmos DB векселя на подготовленную пропускную способность и потребляемую память за час.Azure Cosmos DB bills for provisioned throughput and consumed storage by hour. Подготовленная пропускная способность выражается в единицах запросов в секунду, которые могут использоваться для типичных операций с базами данных, таких как операции вставки, чтения.Provisioned throughput is expressed in Request Units per second (RU/s), which can be used for typical database operations, such as inserts, reads. Плата за хранилище взимается за каждый ГБ, используемый для хранимых данных и индекса.Storage is billed for each GB used for your stored data and index. Дополнительные сведения см. в разделе модель ценообразования Cosmos DB .See Cosmos DB pricing model for more information.

В этой архитектуре, когда запросы на доступ к данным Cosmos DB превышают емкость единиц запросов (или RUs), Azure Monitor инициирует предупреждения.In this architecture, when data access requests to Cosmos DB exceed the capacity in Request Units (or RUs), Azure Monitor triggers alerts. В ответ на эти предупреждения группа действий Azure Monitor настроена для вызова функции автоматизации.In response to those alerts, an Azure Monitor action group is configured to call the automation function. Функция масштабирует объект RUs до более высокого значения.The function scales the RUs to a higher value. Это позволяет снизить затраты, так как вы платите только за ресурсы, которые требуются для рабочих нагрузок на каждый час.This helps to keep the cost down because you only pay for the resources that your workloads need on a per-hour basis.

Чтобы получить краткую оценочную стоимость рабочей нагрузки, используйте Калькулятор емкости Cosmos DB.To get a quick cost estimate of your workload, use the Cosmos DB capacity calculator.

Дополнительные сведения см. в разделе "затраты" в Microsoft Azure хорошо спроектированной инфраструктурой.For more information, see the Cost section in Microsoft Azure Well-Architected Framework.

Рекомендации по развертываниюDeployment considerations

Для критически важных рабочих процессов автоматизации, которые управляют поведением приложения, развертывание с нулевым временем простоя должно быть выполнено с помощью эффективного конвейера DevOps.For critical automation workflows that manage behavior of your application, zero downtime deployment must be achieved using an efficient DevOps pipeline. Дополнительные сведения см. в статье развертывание серверного внутреннего сервера.For more information, read serverless backend deployment.

Если автоматизация охватывает несколько приложений, следует защитить ресурсы, необходимые для автоматизации, в отдельной группе ресурсов.If the automation covers multiple applications, keep the resources required by the automation in a separate resource group. Одна группа ресурсов может совместно использоваться службой автоматизации и ресурсами приложения, если автоматизация охватывает одно приложение.A single resource group can be shared between automation and application resources, if the automation covers a single application.

Если рабочий процесс включает несколько функций автоматизации, сгруппируйте функции, адаптируются один сценарий в одном приложении-функции.If the workflow involves a number of automation functions, group the functions catering to one scenario in a single function app. Дополнительные сведения см. в статье Управление приложением функции .Read Manage function app for more information.

Развертывание решенияDeploy the solution

Чтобы развернуть эталонные реализации для этой архитектуры, см. шаги по развертыванию в GitHub для требуемого рабочего процесса.To deploy the reference implementations for this architecture, see the deployment steps on GitHub for the desired workflow.

Дальнейшие действияNext steps

Дополнительные сведения о реализациях бессерверных реализаций.Learn more about the serverless implementations.