Zkopírování objektu blob z adresy URL zdrojového objektu pomocí Go
Tento článek ukazuje, jak zkopírovat objekt blob ze zdrojové adresy URL objektu pomocí klientského modulu Azure Storage pro Go. Objekt blob můžete zkopírovat ze zdroje ve stejném účtu úložiště, ze zdroje v jiném účtu úložiště nebo z libovolného přístupného objektu načteného prostřednictvím požadavku HTTP GET na dané adrese URL.
Metody klientské knihovny popsané v tomto článku používají operace Put Blob From URL a Put Block From URL REST API. Tyto metody jsou upřednostňované pro scénáře kopírování, ve kterých chcete přesunout data do účtu úložiště a mít adresu URL zdrojového objektu. Operace kopírování, ve kterých chcete asynchronní plánování, najdete v tématu Kopírování objektu blob s asynchronním plánováním pomocí Jazyka Go.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Go 1.18+
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s modulem klienta Azure Blob Storage pro Go. Kroky zahrnují instalaci modulu, přidání import
cest a vytvoření autorizovaného klientského objektu. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Go.
Instalace modulů
Pomocí následujícího příkazu nainstalujte modul azblob:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Pokud se chcete ověřit pomocí Microsoft Entra ID (doporučeno), nainstalujte azidentity
modul pomocí následujícího příkazu:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Přidání cest importu
Do souboru kódu přidejte následující cesty importu:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Tyto cesty importu představují minimum potřebné k zahájení práce. Některé příklady kódu v tomto článku můžou vyžadovat další cesty importu. Konkrétní podrobnosti a ukázkové použití najdete v ukázkách kódu.
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte objekt klienta pomocí příkazu azblob. NewClient. Následující příklad ukazuje, jak vytvořit objekt klienta pro DefaultAzureCredential
autorizaci:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění k provedení operace kopírování. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete předdefinovanou roli Přispěvatel dat objektů blob služby Azure RBAC nebo vyšší. Další informace najdete v pokynech k autorizaci pro vložení objektu blob z adresy URL nebo adresy URL put Block From.
Kopírování objektů blob z adresy URL zdrojového objektu
Operace Put Blob From URL
vytvoří nový objekt blob bloku, ve kterém se obsah objektu blob načte z dané adresy URL. Operace se dokončí synchronně.
Zdrojem může být libovolný objekt, který lze načíst prostřednictvím standardního požadavku HTTP GET na dané adrese URL. To zahrnuje objekty blob bloku, doplňovací objekty blob, objekty blob stránky, snímky objektů blob, verze objektů blob nebo jakýkoli přístupný objekt uvnitř Nebo mimo Azure.
Pokud je zdrojovým objektem objekt blob bloku, zkopíruje se veškerý potvrzený obsah objektu blob. Obsah cílového objektu blob je shodný s obsahem zdroje, ale seznam potvrzených bloků se nezachová a nepotvrzené bloky se nekopírují.
Cílem je vždy objekt blob bloku, existující objekt blob bloku nebo nový objekt blob bloku vytvořený operací. Obsah existujícího objektu blob se přepíše obsahem nového objektu blob.
Operace Put Blob From URL
vždy kopíruje celý zdrojový objekt blob. Kopírování rozsahu bajtů nebo sady bloků se nepodporuje. Pokud chcete provádět částečné aktualizace obsahu objektu blob bloku pomocí zdrojové adresy URL, použijte společně s Put Block List
rozhraním API adresy URL Put Block From .
Další informace o Put Blob From URL
operaci, včetně omezení velikosti objektů blob a aspektů fakturace, najdete v tématu Poznámky k vložení objektu blob z adresy URL.
Zkopírování objektu blob z adresy URL zdrojového objektu
Tato část poskytuje přehled metod poskytovaných klientskou knihovnou služby Azure Storage pro Go k provedení operace kopírování z adresy URL zdrojového objektu.
Následující metoda zabalí operaci Put Blob From URL REST API a vytvoří nový objekt blob bloku, ve kterém se obsah objektu blob načte z dané adresy URL:
Tato metoda je upřednostňovaná pro scénáře, kdy chcete přesunout data do účtu úložiště a mít adresu URL zdrojového objektu.
U velkých objektů se můžete rozhodnout pracovat s jednotlivými bloky. Následující metoda zabalí operaci PUT Block From URL REST API. Tato metoda vytvoří nový blok, který se potvrdí jako součást objektu blob, kde se obsah načítá ze zdrojové adresy URL:
Kopírování objektu blob ze zdroje v Azure
Pokud kopírujete objekt blob ze zdroje v Rámci Azure, je možné přístup ke zdrojovému objektu blob autorizovat prostřednictvím Microsoft Entra ID (doporučeno), sdíleného přístupového podpisu (SAS) nebo klíče účtu.
Následující příklad kódu ukazuje scénář kopírování zdrojového objektu blob v Rámci Azure. V tomto příkladu také nastavíme úroveň přístupu pro cílový objekt blob tak, aby Cool
používala strukturu UploadBlobFromURLOptions .
func copyFromSourceURL(srcBlob *blockblob.Client, destBlob *blockblob.Client) {
// Set copy options
copyOptions := blockblob.UploadBlobFromURLOptions{
Tier: to.Ptr(blob.AccessTierCool),
}
// Copy the blob from the source URL to the destination blob
_, err := destBlob.UploadBlobFromURL(context.TODO(), srcBlob.URL(), ©Options)
handleError(err)
}
Následující příklad ukazuje ukázkové využití:
// TODO: replace <storage-account-name> placeholders with actual storage account names
srcURL := "https://<src-storage-account-name>.blob.core.windows.net/"
destURL := "https://<dest-storage-account-name>.blob.core.windows.net/"
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
srcClient, err := azblob.NewClient(srcURL, credential, nil)
handleError(err)
destClient, err := azblob.NewClient(destURL, credential, nil)
handleError(err)
srcBlob := srcClient.ServiceClient().NewContainerClient("source-container").NewBlockBlobClient("source-blob")
destBlob := destClient.ServiceClient().NewContainerClient("destination-container").NewBlockBlobClient("destination-blob-1")
copyFromSourceURL(srcBlob, destBlob)
Kopírování objektu blob ze zdroje mimo Azure
Operaci kopírování můžete provést u libovolného zdrojového objektu, který lze načíst prostřednictvím požadavku HTTP GET na danou adresu URL, včetně přístupných objektů mimo Azure. Následující příklad kódu ukazuje scénář kopírování objektu blob z adresy URL přístupného zdrojového objektu.
func copyFromExternalSource(srcURL string, destBlob *blockblob.Client) {
// Set copy options
copyOptions := blockblob.UploadBlobFromURLOptions{
Tier: to.Ptr(blob.AccessTierCool),
}
// Copy the blob from the source URL to the destination blob
_, err := destBlob.UploadBlobFromURL(context.TODO(), srcURL, ©Options)
handleError(err)
}
Následující příklad ukazuje ukázkové využití:
externalURL := "<source-url>"
destBlob = destClient.ServiceClient().NewContainerClient("destination-container").NewBlockBlobClient("destination-blob-2")
copyFromExternalSource(externalURL, destBlob)
Zdroje informací
Další informace o kopírování objektů blob pomocí klientské knihovny Azure Blob Storage pro Go najdete v následujících zdrojích informací.
Ukázky kódu
- Zobrazení ukázek kódu z tohoto článku (GitHub)
Operace rozhraní REST API
Sada Azure SDK for Go obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Go. Metody klientské knihovny popsané v tomto článku používají následující operace rozhraní REST API:
- Vložení objektu blob z adresy URL (REST API)
- Put Block From URL (REST API)
Prostředky klientského modulu
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Go. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace Go.