Guidelines
-
The sync command compares file names and last modified timestamps. Set the optional flag to a value of or to delete files in the destination directory if those files no longer exist in the source directory.
-
If you set the flag to , AzCopy deletes files without providing a prompt. If you want a prompt to appear before AzCopy deletes a file, set the flag to .
-
If you plan to set the flag to or , consider using the copy command instead of the
sync command and set the parameter to . The copy command consumes less memory and incurs less billing costs because a copy operation doesn’t have to index the source or destination prior to moving files. -
To prevent accidental deletions, make sure to enable the soft delete feature before you use the flag.
-
The machine on which you run the sync command should have an accurate system clock because the last modified times are critical in determining whether a file should be transferred. If your system has significant clock skew, avoid modifying files at the destination too close to the time that you plan to run a sync command.
Managed identity authentication and Azure Blob connector
Currently, managed identity authentication is only supported in Logic Apps. Follow steps below to use it to connect to your Azure Blob data:
- Create an Azure Managed Identity
- Give identity access to Azure Blob resources. For more details, visit .
- If using a user-assigned identity, associate the logic app with the managed identity
- Navigate to the Logic App that will use the managed identity.
- Under Settings section of the blade, click
- Go to tab and click on
- Select the managed identity to be used and click on
For more information about authenticating with managed identities in Logic Apps visit Authenticate access to Azure resources using managed identities in Azure Logic Apps
Operations not supported with AAD and Managed Identity authentication
When using AAD or Managed identity authentication only V2 actions are supported. Deprecated actions will continue to work with authentication, but will fail if used with an AAD or Managed identity connection.
Currently, the following V2 actions are not supported by AAD OR Managed identity authentication, as a work around, use the action with an access key authentication:
- Create SAS URI by Path (V2)
- Get available access policies (V2)
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Example scenarios
The following table compares Files, Blobs, Disks, Queues, and Tables, and shows example scenarios for each.
Feature | Description | When to use |
---|---|---|
Azure Files | Offers fully managed cloud file shares that you can access from anywhere via the industry standard Server Message Block (SMB) protocol.You can mount Azure file shares from cloud or on-premises deployments of Windows, Linux, and macOS. | You want to «lift and shift» an application to the cloud that already uses the native file system APIs to share data between it and other applications running in Azure.You want to replace or supplement on-premises file servers or NAS devices. You want to store development and debugging tools that need to be accessed from many virtual machines. |
Azure Blobs | Allows unstructured data to be stored and accessed at a massive scale in block blobs.Also supports Azure Data Lake Storage Gen2 for enterprise big data analytics solutions. | You want your application to support streaming and random access scenarios.You want to be able to access application data from anywhere.You want to build an enterprise data lake on Azure and perform big data analytics. |
Azure Disks | Allows data to be persistently stored and accessed from an attached virtual hard disk. | You want to «lift and shift» applications that use native file system APIs to read and write data to persistent disks.You want to store data that is not required to be accessed from outside the virtual machine to which the disk is attached. |
Azure Queues | Allows for asynchronous message queueing between application components. | You want to decouple application components and use asynchronous messaging to communicate between them.For guidance around when to use Queue storage versus Service Bus queues, see Storage queues and Service Bus queues — compared and contrasted. |
Azure Tables | Allow you to store structured NoSQL data in the cloud, providing a key/attribute store with a schemaless design. | You want to store flexible datasets like user data for web applications, address books, device information, or other types of metadata your service requires. For guidance around when to use Table storage versus the Azure Cosmos DB Table API, see Developing with Azure Cosmos DB Table API and Azure Table storage. |
Примеры кода
Фрагменты кода в следующих разделах демонстрируют, как выполнять основные операции с данными с помощью клиентской библиотеки Хранилища BLOB-объектов Azure для .NET.
Получение строки подключения
Приведенный ниже код извлекает строку подключения для учетной записи хранения из переменной среды, созданной в разделе .
Добавьте этот код в метод .
Создание контейнера
Выберите имя нового контейнера. Приведенный ниже код добавляет к имени контейнера значение GUID, чтобы сделать это имя уникальным.
Важно!
Имена контейнеров должны состоять из знаков нижнего регистра. Дополнительные сведения об именовании контейнеров и больших двоичных объектов см. в статье Naming and Referencing Containers, Blobs, and Metadata (Именование контейнеров, больших двоичных объектов и метаданных и ссылка на них).
Создайте экземпляр класса BlobServiceClient. Затем вызовите метод CreateBlobContainerAsync, чтобы создать контейнер в своей учетной записи хранения.
Добавьте следующий код в конец метода .
Отправка большого двоичного объекта в контейнер
Приведенный ниже фрагмент кода:
- Создает текстовый файл в локальном каталоге data.
- Возвращает ссылку на объект BlobClient, вызывая метод GetBlobClient для контейнера из раздела .
- Передает локальный текстовый файл в большой двоичный объект, вызывая метод . С помощью этого метода создается большой двоичный объект, если он не был создан ранее, или же, если он имеется, происходит его замещение.
Добавьте следующий код в конец метода .
Получение списка BLOB-объектов в контейнере
Выведите список больших двоичных объектов в контейнере, вызвав метод GetBlobsAsync. В этом случае в контейнер был добавлен лишь один большой двоичный объект, поэтому операция перечисления возвращает только его.
Добавьте следующий код в конец метода .
Загрузка больших двоичных объектов
Скачайте созданный ранее BLOB-объект, вызвав метод DownloadToAsync. Пример кода добавляет суффикс «DOWNLOADED» к имени файла, чтобы в локальной файловой системе можно было просмотреть оба файла.
Добавьте следующий код в конец метода .
Удаление контейнера
Следующий код очищает созданные приложением ресурсы, полностью удаляя контейнер с помощью метода DeleteAsync. Он также удаляет локальные файлы, созданные приложением.
Приложение приостанавливается для ввода пользователя, вызывая , перед удалением большого двоичного объекта, контейнера и локальных файлов. Это хорошая возможность проверить правильность создания ресурсов перед их удалением.
Добавьте следующий код в конец метода .
Benefits of Using Azure Blob Storage for SQL Server Backups
-
Flexible, reliable, and limitless off-site storage: Storing your backups on Azure Blob Storage can be a convenient, flexible, and easy to access off-site option. Creating off-site storage for your SQL Server backups can be as easy as modifying your existing scripts/jobs. Off-site storage should typically be far enough from the production database location to prevent a single disaster that might impact both the off-site and production database locations. By choosing to geo replicate Blob Storage, you have an extra layer of protection in the event of a disaster that could affect the whole region. In addition, backups are available from anywhere and at any time and can easily be accessed for restores.
Important
Through the use of block blobs in SQL Server 2016 (13.x), you can stripe your backup set to support backup files sizes up to 12.8 TB.
-
Backup Archive: Azure Blob Storage offers a better alternative to the often used tape option to archive backups. Tape storage might require physical transportation to an off-site facility and measures to protect the media. Storing your backups in Azure Blob Storage provides an instant, highly available, and a durable archiving option.
-
No overhead of hardware management: There is no overhead of hardware management with Microsoft Azure services. Microsoft Azure services manage the hardware and provide geo-replication for redundancy and protection against hardware failures.
-
Currently for instances of SQL Server running in a Microsoft Azure Virtual Machine, backing up to Azure Blob Storage can be done by creating attached disks. However, there is a limit to the number of disks you can attach to a Microsoft Azure Virtual Machine. This limit is 16 disks for an extra large instance and fewer for smaller instances. By enabling a direct backup to Azure Blob Storage, you can bypass the 16 disk limit.
In addition, the backup file which now is stored in Azure Blob Storage is directly available to either an on-premises SQL Server or another SQL Server running in a Microsoft Azure Virtual Machine, without the need for database attach/detach or downloading and attaching the VHD.
-
Cost Benefits: Pay only for the service that is used. Can be cost-effective as an off-site and backup archive option. See the section for more information and links.
Шаг 4. Добавление условия
-
На вкладке Условия (необязательно) нажмите кнопку Добавить условие.
Откроется страница добавления условия назначения роли.
-
В разделе Добавить действие щелкните Добавить действие.
Отобразится область «Выберите действие». Эта область представляет собой отфильтрованный список действий с данными на основе назначения роли, который будет целевым объектом условия.
-
В разделе «Ознакомиться с блогом» щелкните Read content from a blob with tag conditions (Чтение содержимого из большого двоичного объекта с условиями тега), а затем нажмите кнопку Выбрать.
-
В разделе создания выражений щелкните Добавить выражение.
Развернется раздел «Выражение».
-
Укажите следующие параметры выражения:
Параметр Значение Источник атрибута Ресурс attribute Теги индекса BLOB-объектов Ключ Project Оператор StringEqualsIgnoreCase Значение Cascade -
Прокрутите вниз до элемента Editor type (Тип редактора) и щелкните Код.
Условие отобразится в виде кода. В этом редакторе кода можно внести в условие изменения. Чтобы вернуться в визуальный редактор, щелкните Визуальный элемент.
-
Нажмите кнопку Сохранить, чтобы добавить условие и вернуть страницу «Добавление назначения роли».
-
Щелкните Далее.
-
На вкладке Проверка и назначение нажмите кнопку Проверка и назначение, чтобы назначить роль с условием.
Через несколько секунд субъекту безопасности будет назначена роль в выбранной области.
Troubleshooting
General
Storage Blob clients raise exceptions defined in Azure Core.
This list can be used for reference to catch thrown exceptions. To get the specific error code of the exception, use the attribute, i.e, .
Logging
This library uses the standard
logging library for logging.
Basic information about HTTP sessions (URLs, headers, etc.) is logged at INFO
level.
Detailed DEBUG level logging, including request/response bodies and unredacted
headers, can be enabled on a client with the argument:
Similarly, can enable detailed logging for a single operation,
even when it isn’t enabled for the client:
Storage account billing
Azure Storage bills based on your storage account usage. All objects in a storage account are billed together as a group. Storage costs are calculated according to the following factors:
- Region refers to the geographical region in which your account is based.
- Account type refers to the type of storage account you’re using.
- Access tier refers to the data usage pattern you’ve specified for your general-purpose v2 or Blob storage account.
- Capacity refers to how much of your storage account allotment you’re using to store data.
- Redundancy determines how many copies of your data are maintained at one time, and in what locations.
- Transactions refer to all read and write operations to Azure Storage.
- Data egress refers to any data transferred out of an Azure region. When the data in your storage account is accessed by an application that isn’t running in the same region, you’re charged for data egress. For information about using resource groups to group your data and services in the same region to limit egress charges, see .
The Azure Storage pricing page provides detailed pricing information based on account type, storage capacity, replication, and transactions. The Data Transfers pricing details provides detailed pricing information for data egress. You can use the Azure Storage pricing calculator to help estimate your costs.
Azure services cost money. Azure Cost Management helps you set budgets and configure alerts to keep spending under control. Analyze, manage, and optimize your Azure costs with Cost Management. To learn more, see the quickstart on analyzing your costs.
Download files from Azure Blob Storage
So far you’ve added the ability to view containers, files from the selected container, and the option to upload file to the storage. Now, let’s understand how to work with the download capability with the connected storage.
-
Select the first row in the gallery with the list of files from a container.
-
Select Insert -> Icons -> Download.
This adds the download icon for all rows in the gallery. -
Move the first download icon towards the right side inside the gallery on the app screen. This also moves rest of the icons for next rows in gallery.
-
Set the OnSelect property of the download icon to:
This operation creates a SAS link for a blob using the path. More information:
Important
SAS URI created using CreateShareLinkByPath has a of 24 hours. If you have a business requirement to expire the URI in a shorter or different time, consider updates to this formula. For example, the below sample expires the URI in 1 hour using Now() and DateAdd() functions.
Tip
For more information about configuring Azure Blob Storage for public anonymous access, and different public access levels, go to Configure anonymous public read access for containers and blobs.
The app now has the ability to allow you to download the files.
Copy a blob container
Storage Explorer enables you to copy a blob container to the clipboard, and then paste that blob container into another storage account. (To see how to copy individual blobs,
refer to the section, .)
The following steps illustrate how to copy a blob container from one storage account to another.
-
Open Storage Explorer.
-
In the left pane, expand the storage account containing the blob container you wish to copy.
-
Expand the storage account’s Blob Containers.
-
Right-click the blob container you wish to copy, and — from the context menu — select Copy Blob Container.
-
Right-click the desired «target» storage account into which you want to paste the blob container, and — from the context menu — select Paste Blob Container.
Enums
BlobContainerPublicAccessType |
Specifies the level of public access that is allowed on the container. The public access setting indicates whether the container and its blobs can be read via an anonymous request. The BlobContainerPublicAccessType enumeration provides three levels of anonymous read access:
For more information on managing anonymous access to Blob service resources, see Setting Access Control for Containers. |
BlobListingDetails |
Specifies which items to include when listing a set of blobs. By default, committed blocks are always returned. Use the values in this enum to include snapshots, metadata, and/or uncommitted blocks. |
BlobType |
Specifies the type of a blob. |
BlockListingFilter |
Specifies whether to list only committed blocks, only uncommitted blocks, or all blocks. |
BlockSearchMode |
Specifies which block lists should be searched to find a specified block. |
ContainerListingDetails |
Specifies which details to include when listing the containers in this storage account. |
CopyStatus |
Represents the status of a copy blob operation. |
DeleteSnapshotsOption |
Specifies options when calling delete operations. |
LeaseDuration |
The lease duration of a resource. |
LeaseState |
The lease state of a resource. |
LeaseStatus |
Specifies the lease status of a blob. You can check the lease status of a blob to determine whether it currently has an active lease (locked for exclusive-write access), or whether it is available for exclusive-write access. |
PremiumPageBlobTier |
The tier of the page blob. Please take a look at for detailed information on the corresponding IOPS and throughput per PremiumPageBlobTier. |
RehydratePriority |
The rehydrate priority of the blob. |
RehydrationStatus |
The rehydration status for the blob that is currently archived. Only applicable for block blobs on standard storage accounts for this version. |
SharedAccessBlobPermissions |
Specifies the set of possible permissions for a shared access policy. |
StandardBlobTier |
The tier of the block blob on a standard storage account. |
Optional customizations
In this section, you’ll learn about optional and additional customizations that you can consider for your app.
Media type
You can use Media type, or Path fields for the gallery to optionally display the image content in the respective controls. For example, PDF viewer for PDF files, Image for images, or Audio/video for audio/video files.
For example, to filter the files with the file extension type of .pdf, use the following sample formula.
Similarly, you can use different file extension types, or media types to additionally customize added controls.
Refresh galleries connected to Azure Blob Storage
The Azure Blob Storage connection doesn’t refresh data inside the galleries automatically when the data is updated. If you have more than one container, you can select the other container and then, select the previously selected container back to refresh the connected gallery to display the changes.
Another method that can be considered is to use collection for the first gallery, and then, use the function ClearCollect to refresh the collection.
For example, the following formulas allow you to update the collection for the top containers list in the first gallery, and update the second gallery when upload button is selected, or when the screen appears (OnVisible screen property).
-
Set the Items property of the first gallery for the list of containers to «TopLevelList».
-
Append to the upload button OnSelect property:
-
Add to the screen OnVisible property:
Доступ к учетным записям хранения, защищенным брандмауэром
Вы можете добавить сетевую безопасность в учетную запись хранения Azure, запретив доступ с помощью брандмауэра и правил брандмауэра. Однако такая настройка создает сложности для Azure и других служб Майкрософт, которым требуется доступ к учетной записи хранения. Локальное взаимодействие в центре обработки данных абстрагирует внутренние IP-адреса, поэтому нельзя настроить правила брандмауэра с ограничениями IP-адресов.
Чтобы получить доступ к учетным записям хранения, защищенным брандмауэрами, с помощью соединителя службы «Хранилище BLOB-объектов» выполните приведенные ниже действия.
Ниже приведены другие решения для доступа к учетным записям хранения, защищенным брандмауэрами.
Доступ к учетным записям хранения в других регионах
Рабочие процессы приложения логики не могут напрямую обращаться к учетным записям хранения, защищенным брандмауэром, если они находятся в одном регионе. В качестве обходного решения разместите ресурсы приложения логики в регионе, отличном от региона вашей учетной записи хранения. Затем предоставьте доступ к .
Примечание
Это решение не относится к соединителю Хранилища таблиц Azure и соединителю Хранилища очередей Azure. вместо этого для доступа к таблице служба хранилища или служба хранилища очереди используйте встроенный триггер HTTP и действие.
Чтобы добавить исходящие IP-адреса в брандмауэр учетной записи хранения, выполните следующие действия.
Обратите внимание на для региона вашего ресурса приложения логики.
В портал Azureнайдите и откройте ресурс учетной записи хранения.
В меню навигации учетной записи хранения в разделе безопасность и сеть выберите сеть.
В разделе Разрешить доступ из выберите Выбранные сети, где отображаются соответствующие параметры.
В разделе Брандмауэр добавьте IP-адреса или диапазоны, которым требуется доступ. Если необходимо получить доступ к учетной записи хранения с компьютера, выберите Добавить IP-адрес клиента.
Когда все будет готово, нажмите кнопку Сохранить.
Доступ к учетным записям хранения через доверенную виртуальную сеть
Учетную запись хранения можно поместить в виртуальную сеть Azure, которой вы управляете, а затем добавить эту сеть в список доверенных виртуальных сетей. Чтобы обеспечить доступ приложения логики к учетной записи хранения через доверенную виртуальную сеть, необходимо развернуть это приложение в среде службы интеграции (ISE), которая может подключаться к ресурсам в виртуальной сети. Затем можно добавить подсети из этой среды ISE в список доверенных. Соединители службы хранилища Azure, такие как соединитель Хранилища BLOB-объектов, могут напрямую обращаться к контейнеру хранилища. Эта настройка аналогична использованию конечных точек службы из среды ISE.
Доступ к учетным записям хранения с помощью службы «Управление API Azure»
Если вы используете выделенный уровень для Управления API, то можете разместить интерфейс API службы хранилища с помощью службы «Управление API» и разрешить другим IP-адресам доступ через брандмауэр. В общем, добавьте виртуальную сеть Azure, используемую службой «Управление API», в параметр брандмауэра учетной записи хранения. Затем можно использовать действие Управления API или действие HTTP для вызова API-интерфейсов службы хранилища Azure. Однако при выборе этого варианта вам потребуется самостоятельно обрабатывать процесс проверки подлинности. Дополнительные сведения см. в статье Простая архитектура корпоративной интеграции.
Blob storage
Azure Blob storage is Microsoft’s object storage solution for the cloud. Blob storage is optimized for storing massive amounts of unstructured data, such as text or binary data.
Blob storage is ideal for:
- Serving images or documents directly to a browser.
- Storing files for distributed access.
- Streaming video and audio.
- Storing data for backup and restore, disaster recovery, and archiving.
- Storing data for analysis by an on-premises or Azure-hosted service.
Objects in Blob storage can be accessed from anywhere in the world via HTTP or HTTPS. Users or client applications can access blobs via URLs, the Azure Storage REST API, Azure PowerShell, Azure CLI, or an Azure Storage client library. The storage client libraries are available for multiple languages, including .NET, Java, Node.js, Python, PHP, and Ruby.
For more information about Blob storage, see Introduction to Blob storage.
Legacy storage account types
The following table describes the legacy storage account types. These account types are not recommended by Microsoft, but may be used in certain scenarios:
Type of legacy storage account | Supported storage services | Redundancy options | Deployment model | Usage |
---|---|---|---|---|
Standard general-purpose v1 | Blob, Queue, and Table storage, Azure Files | LRS/GRS/RA-GRS | Resource Manager, Classic | General-purpose v1 accounts may not have the latest features or the lowest per-gigabyte pricing. Consider using for these scenarios:
|
Standard Blob storage | Blob storage (block blobs and append blobs only) | LRS/GRS/RA-GRS | Resource Manager | Microsoft recommends using standard general-purpose v2 accounts instead when possible. |
Azure AD authentication and Azure Blob connector
In order to use AAD authentication, the account that is being used needs to be assigned an specific role assignment, for more information, visit Assign an Azure role for access to blob data — Azure Storage:
Note
Only roles explicitly defined for data access permit a security principal to access blob or queue data. Built-in roles such as Owner, Contributor, and Storage Account Contributor permit a security principal to manage a storage account, but do not provide access to the blob or queue data within that account via Azure AD.
Here is a quick test to verify if an account has the required role to perform operations in a container:
- Sign-in with that account in the Azure Portal.
- Navigate to the container in the storage account and that will be used and click on in the Authentication method. This option appears just on top of the search box for blobs.
If an un-authorized message pops-up, the user needs to be assigned Storage Account specific permissions. To do this, the storage account manager should:
- Navigate to the container’s tab.
- Click on
- Click on
- Assign a specific role to the user (for example, )
For more information about access roles on Azure Blob, visit
Ограничения
-
Для рабочих процессов приложения логики, выполняемых в среде службы интеграции (ISE), эта версия этого соединителя использует среды сценариев.
-
По умолчанию действия Хранилища BLOB-объектов обеспечивают считывание или запись файлов размером 50 МБ или меньше. Для обработки файлов размером более 50 МБ (но не более 1024 МБ) действия Хранилища BLOB-объектов поддерживают фрагментацию сообщений. Действие неявно использует фрагментацию.
-
-
Используйте триггер Хранилища BLOB-объектов, который возвращает свойства файла, например .
-
Далее используйте триггер с действием в Хранилище BLOB-объектов, которое считывает полный файл и неявно использует фрагментацию.
-