Een blob kopiëren van een bronobject-URL met .NET
In dit artikel wordt beschreven hoe u een blob kopieert vanuit een bronobject-URL met behulp van de Azure Storage-clientbibliotheek voor .NET. U kunt een blob kopiëren vanuit een bron binnen hetzelfde opslagaccount, van een bron in een ander opslagaccount of van een toegankelijk object dat via een HTTP GET-aanvraag op een bepaalde URL wordt opgehaald.
De clientbibliotheekmethoden die in dit artikel worden behandeld, maken gebruik van de Put Blob From URL en Put Block From URL REST API-bewerkingen. Deze methoden hebben de voorkeur voor kopieerscenario's waarbij u gegevens naar een opslagaccount wilt verplaatsen en een URL voor het bronobject wilt hebben. Zie Een blob met asynchrone planning kopiëren met asynchrone planning met behulp van .NET voor kopieerbewerkingen waar u asynchrone planning wilt.
Vereisten
- Azure-abonnement: u kunt een gratis abonnement nemen
- Azure Storage-account: maak een opslagaccount
- Nieuwste .NET SDK voor uw besturingssysteem. Zorg ervoor dat u de SDK en niet de runtime ophaalt.
Uw omgeving instellen
Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor .NET. De stappen omvatten pakketinstallatie, het toevoegen van using
instructies en het maken van een geautoriseerd clientobject. Zie Aan de slag met Azure Blob Storage en .NET voor meer informatie.
Pakketten installeren
Installeer vanuit uw projectmap pakketten voor de Azure Blob Storage- en Azure Identity-clientbibliotheken met behulp van de dotnet add package
opdracht. Het Azure.Identity-pakket is nodig voor verbindingen zonder wachtwoord met Azure-services.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Voeg using
-instructies toe
Voeg deze using
instructies toe aan het begin van het codebestand:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Voor sommige codevoorbeelden in dit artikel zijn mogelijk aanvullende using
instructies vereist.
Een clientobject maken
Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential
autorisatie:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
U kunt een serviceclient registreren voor afhankelijkheidsinjectie in een .NET-app.
U kunt ook clientobjecten maken voor specifieke containers of blobs. Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.
Autorisatie
Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een kopieerbewerking uit te voeren. Voor autorisatie met Microsoft Entra ID (aanbevolen) hebt u ingebouwde Azure RBAC-rol Opslagblobgegevensbijdrager of hoger nodig. Zie de autorisatierichtlijnen voor Put Blob From URL (REST API) of Put Block From URL (REST API) voor meer informatie.
Over het kopiëren van blobs vanuit een bronobject-URL
Met de Put Blob From URL
bewerking wordt een nieuwe blok-blob gemaakt waarin de inhoud van de blob wordt gelezen uit een bepaalde URL. De bewerking wordt synchroon voltooid.
De bron kan elk object ophalen via een standaard HTTP GET-aanvraag op de opgegeven URL. Dit omvat blok-blobs, toevoeg-blobs, pagina-blobs, blob-momentopnamen, blobversies of een toegankelijk object binnen of buiten Azure.
Wanneer het bronobject een blok-blob is, wordt alle vastgelegde blob-inhoud gekopieerd. De bloklijst blijft echter niet behouden en niet-opgegeven blokken worden niet gekopieerd. De inhoud van de doel-blob is identiek aan die van de bron, maar de vastgelegde bloklijst blijft niet behouden.
De bestemming is altijd een blok-blob, een bestaande blok-blob of een nieuwe blok-blob die door de bewerking is gemaakt. De inhoud van een bestaande blob wordt overschreven met de inhoud van de nieuwe blob.
Met Put Blob From URL
de bewerking wordt altijd de hele bron-blob gekopieerd. Het kopiëren van een bereik van bytes of een set blokken wordt niet ondersteund. Als u gedeeltelijke updates wilt uitvoeren voor de inhoud van een blok-blob met behulp van een bron-URL, gebruikt u de API Put Block From URL samen met Put Block List.
Zie Opmerkingen bij Put Blob From URL voor meer informatie over de Put Blob From URL
bewerking, inclusief beperkingen voor blobgrootten en factureringsoverwegingen.
Een blob kopiëren vanuit een bronobject-URL
In deze sectie vindt u een overzicht van methoden die door de Azure Storage-clientbibliotheek voor .NET worden geboden om een kopieerbewerking uit te voeren vanaf een bronobject-URL.
De volgende methoden verpakken de bewerking Put Blob From URL REST API en maken een nieuwe blok-blob waarin de inhoud van de blob wordt gelezen uit een bepaalde URL:
Deze methoden hebben de voorkeur voor scenario's waarin u gegevens naar een opslagaccount wilt verplaatsen en een URL voor het bronobject wilt hebben.
Voor grote objecten kunt u ervoor kiezen om met afzonderlijke blokken te werken. Met de volgende methoden wordt de bewerking Put Block from URL REST API verpakt. Met deze methoden maakt u een nieuw blok dat moet worden doorgevoerd als onderdeel van een blob waarin de inhoud wordt gelezen uit een bron-URL:
Een blob kopiëren vanuit een bron in Azure
Als u een blob kopieert vanuit een bron in Azure, kan toegang tot de bron-blob worden geautoriseerd via Microsoft Entra ID, een SHARED Access Signature (SAS) of een accountsleutel.
In het volgende voorbeeld ziet u een scenario voor het kopiëren van een bron-blob in Azure. De methode SyncUploadFromUriAsync kan desgewenst een Booleaanse parameter accepteren om aan te geven of een bestaande blob moet worden overschreven, zoals wordt weergegeven in het voorbeeld. De overwrite
parameter wordt standaard ingesteld op false.
//-------------------------------------------------
// Copy a blob from the same storage account
//-------------------------------------------------
public static async Task CopyWithinStorageAccountAsync(
BlobClient sourceBlob,
BlockBlobClient destinationBlob)
{
// Get the source blob URI and create the destination blob
// overwrite param defaults to false
await destinationBlob.SyncUploadFromUriAsync(sourceBlob.Uri/*, overwrite: false*/);
}
De methode SyncUploadFromUriAsync kan ook een blobSyncUploadFromUriOptions-parameter accepteren om verdere opties voor de bewerking op te geven.
Een blob kopiëren van een bron buiten Azure
U kunt een kopieerbewerking uitvoeren op elk bronobject dat kan worden opgehaald via een HTTP GET-aanvraag op een bepaalde URL, inclusief toegankelijke objecten buiten Azure. In het volgende voorbeeld ziet u een scenario voor het kopiëren van een blob vanuit een toegankelijke bronobject-URL.
//-------------------------------------------------
// Copy a blob from an external source
//-------------------------------------------------
public static async Task CopyFromExternalSourceAsync(
string sourceLocation,
BlockBlobClient destinationBlob)
{
Uri sourceUri = new(sourceLocation);
// Create the destination blob from the source URL
// overwrite param defaults to false
await destinationBlob.SyncUploadFromUriAsync(sourceUri/*, overwrite: false*/);
}
Resources
Zie de volgende resources voor meer informatie over het kopiëren van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor .NET.
Codevoorbeelden
REST API-bewerkingen
De Azure SDK voor .NET bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende .NET-paradigma's. De clientbibliotheekmethoden die in dit artikel worden behandeld, gebruiken de volgende REST API-bewerkingen:
- Blob uit URL plaatsen (REST API)
- Blok van URL plaatsen (REST API)
Clientbibliotheekbronnen
Gerelateerde inhoud
- Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor .NET. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Uw .NET-app bouwen voor meer informatie.