Рекомендации по хранению для Функций AzureStorage considerations for Azure Functions

При создании экземпляра приложения-функции для Функций Azure требуется учетная запись хранения Azure.Azure Functions requires an Azure Storage account when you create a function app instance. Приложение-функция может использовать следующие службы хранилища.The following storage services may be used by your function app:

Служба хранилищаStorage service Назначение функцийFunctions usage
Хранилище BLOB-объектов AzureAzure Blob storage Поддерживает состояние привязок и функциональные ключи.Maintain bindings state and function keys.
Также используется центрами задач в Устойчивых функциях.Also used by task hubs in Durable Functions.
Файлы AzureAzure Files Общая папка, используемая для хранения и запуска кода приложения-функции в плане потребления и плане Premium.File share used to store and run your function app code in a Consumption Plan and Premium Plan.
хранилище очередей Azure;Azure Queue storage Используется центрами задач в Устойчивых функциях.Used by task hubs in Durable Functions.
Хранилище таблиц AzureAzure Table storage Используется центрами задач в Устойчивых функциях.Used by task hubs in Durable Functions.

Важно!

При использовании плана размещения "потребление"/"Премиум" код функции и файлы конфигурации привязки хранятся в хранилище файлов Azure в основной учетной записи хранения.When using the Consumption/Premium hosting plan, your function code and binding configuration files are stored in Azure File storage in the main storage account. При удалении основной учетной записи хранения это содержимое удаляется без возможности восстановления.When you delete the main storage account, this content is deleted and cannot be recovered.

Требования к учетной записи храненияStorage account requirements

При создании приложения-функции необходимо создать или привязать учетную запись хранения Azure общего назначения, поддерживающую хранилища BLOB-объектов, очередей и таблиц.When creating a function app, you must create or link to a general-purpose Azure Storage account that supports Blob, Queue, and Table storage. Это потому, что для внутренних операций, таких как управление триггерами и ведение журнала выполнения функций, Функции Azure используют службу хранилища Azure.This is because Functions relies on Azure Storage for operations such as managing triggers and logging function executions. Некоторые учетные записи хранения не поддерживают очереди и таблицы.Some storage accounts don't support queues and tables. Например, это относится к учетным записям хранения только для больших двоичных объектов, службе хранилища Azure уровня "Премиум" и учетным записям хранения общего назначения с репликацией ZRS.These accounts include blob-only storage accounts, Azure Premium Storage, and general-purpose storage accounts with ZRS replication. Эти неподдерживаемые учетные записи будут отфильтрованы из колонки "Учетная запись хранения" при создании приложения-функции.These unsupported accounts are filtered out of from the Storage Account blade when creating a function app.

Дополнительные сведения о типах учетных записей хранения см. в разделе Введение в службы хранилища Azure.To learn more about storage account types, see Introducing the Azure Storage Services.

Хотя вы можете использовать существующую учетную запись хранения в приложении-функции, необходимо убедиться, что она соответствует этим требованиям.While you can use an existing storage account with your function app, you must make sure that it meets these requirements. Учетные записи хранения, созданные как часть процесса создания приложения-функции, гарантированно удовлетворяют этим требованиям к учетной записи хранения.Storage accounts created as part of the function app create flow are guaranteed to meet these storage account requirements.

Руководство по учетной записи храненияStorage account guidance

Для работы каждого приложения-функции нужна учетная запись хранения.Every function app requires a storage account to operate. Если эта учетная запись удалена, приложение-функция не будет работать.If that account is deleted your function app won't run. Сведения об устранении неполадок, связанных с хранилищем, см. в статье Устранение неполадок, связанных с хранилищем.To troubleshoot storage-related issues, see How to troubleshoot storage-related issues. Следующие дополнительные рекомендации относятся к учетной записи хранения, используемой приложениями-функциями.The following additional considerations apply to the Storage account used by function apps.

Строка подключения учетной записи храненияStorage account connection setting

Подключение к учетной записи хранения сохраняется в параметре приложения AzureWebJobsStorage.The storage account connection is maintained in the AzureWebJobsStorage application setting.

При повторном создании ключей хранилища необходимо обновить указанные выше строки подключения учетной записи хранения.The storage account connection string must be updated when you regenerate storage keys. Дополнительные сведения об управлении ключом хранилища данных см. здесь.Read more about storage key management here.

Общие учетные записи храненияShared storage accounts

Несколько приложений функций могут совместно использовать одну и ту же учетную запись хранения без каких бы то ни было проблем.It's possible for multiple function apps to share the same storage account without any issues. Например, в Visual Studio можно разрабатывать несколько приложений с помощью эмулятора хранения Azure.For example, in Visual Studio you can develop multiple apps using the Azure Storage Emulator. В этом случае эмулятор действует как единая учетная запись хранения.In this case, the emulator acts like a single storage account. Учетную запись хранения, используемую приложением-функцией, также можно использовать для хранения данных приложения.The same storage account used by your function app can also be used to store your application data. Однако этот подход не всегда хорош в рабочей среде.However, this approach isn't always a good idea in a production environment.

Оптимизация производительности хранилищаOptimize storage performance

Чтобы увеличить производительность, используйте для каждого приложения-функции отдельную учетную запись хранения.To maximize performance, use a separate storage account for each function app. Это особенно важно, если у вас есть устойчивые функции или функции, активируемые концентратором событий, так как и те и другие создают большой объем транзакций с хранилищем.This is particularly important when you have Durable Functions or Event Hub triggered functions, which both generate a high volume of storage transactions. Если логика приложения взаимодействует со службой хранилища Azure напрямую (с помощью пакета SDK службы хранилища) или с помощью одной из привязок к хранилищу, следует использовать выделенную учетную запись хранения.When your application logic interacts with Azure Storage, either directly (using the Storage SDK) or through one of the storage bindings, you should use a dedicated storage account. Например, если у вас есть функция, активируемая концентратором событий, которая записывает данные в Хранилище BLOB-объектов, используйте две учетные записи хранения: одну для приложения-функции, а другую — для больших двоичных объектов, сохраняемых функцией.For example, if you have an Event Hub-triggered function writing some data to blob storage, use two storage accounts—one for the function app and another for the blobs being stored by the function.

Шифрование хранимых данныхStorage data encryption

Служба хранилища Azure шифрует все данные в неактивных учетных записях хранения.Azure Storage encrypts all data in a storage account at rest. Дополнительные сведения см. в статье Шифрование службы хранилища Azure для неактивных данных.For more information, see Azure Storage encryption for data at rest.

По умолчанию данные шифруются с помощью ключей, управляемых корпорацией Майкрософт.By default, data is encrypted with Microsoft-managed keys. Для дополнительного управления ключами шифрования можно предоставить ключи, управляемые клиентом, чтобы зашифровать большие двоичные объекты и данные файлов.For additional control over encryption keys, you can supply customer-managed keys to use for encryption of blob and file data. Эти ключи должны присутствовать в Azure Key Vault, чтобы Функции Azure могли получить доступ к учетной записи хранения.These keys must be present in Azure Key Vault for Functions to be able to access the storage account. Дополнительные сведения см. в разделе Шифрование неактивных данных с помощью управляемых клиентом ключей.To learn more, see Encryption at rest using customer-managed keys.

Подключение общих папок (Linux)Mount file shares (Linux)

Вы можете подключить существующие общие папки Файлов Azure к приложениям-функциям Linux.You can mount existing Azure Files shares to your Linux function apps. Подключив общую папку к приложению-функции Linux, вы можете использовать существующие модели машинного обучения или другие данные в своих функциях.By mounting a share to your Linux function app, you can leverage existing machine learning models or other data in your functions. Вы можете использовать команду az webapp config storage-account add, чтобы подключить существующую общую папку к приложению-функции Linux.You can use the az webapp config storage-account add command to mount an existing share to your Linux function app.

В этой команде share-name — это имя существующей общей папки Файлов Azure, а custom-id может быть любой строкой, которая уникально определяет общую папку при подключении к приложению-функции.In this command, share-name is the name of the existing Azure Files share, and custom-id can be any string that uniquely defines the share when mounted to the function app. Кроме того, mount-path — это путь, по которому осуществляется доступ к общей папке в приложении-функции.Also, mount-path is the path from which the share is accessed in your function app. mount-path должен иметь формат /dir-name и не может начинаться с /home.mount-path must be in the format /dir-name, and it can't start with /home.

Полный пример см. в разделе сценариев в Создание приложения-функции Python и подключение общего файлового ресурса Azure.For a complete example, see the scripts in Create a Python function app and mount a Azure Files share.

В настоящее время поддерживается только storage-type AzureFiles.Currently, only a storage-type of AzureFiles is supported. Вы можете подключить только пять общих папок к конкретному приложению-функции.You can only mount five shares to a given function app. Подключение общей папки может увеличить время холодного запуска по крайней мере на 200–300 мс или даже больше, если учетная запись хранения находится в другом регионе.Mounting a file share may increase the cold start time by at least 200-300ms, or even more when the storage account is in a different region.

Подключенная общая папка доступна для кода функции в указанном mount-path.The mounted share is available to your function code at the mount-path specified. Например, если mount-path является /path/to/mount, доступ к целевому каталогу можно получить с помощью API-интерфейсов файловой системы, как показано в следующем примере Python:For example, when mount-path is /path/to/mount, you can access the target directory by file system APIs, as in the following Python example:

import os
...

files_in_share = os.listdir("/path/to/mount")

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

Дополнительные сведения о вариантах размещения в Функциях Azure.Learn more about Azure Functions hosting options.