Blob másolása forrásobjektum URL-címéről a Go használatával
Ez a cikk bemutatja, hogyan másolhat blobokat egy forrásobjektum URL-címéről a Go-hoz készült Azure Storage-ügyfélmodul használatával. Egy blobot másolhat egy forrásból ugyanabban a tárfiókban, egy másik tárfiókban lévő forrásból, vagy bármely akadálymentes objektumból, amely egy adott URL-címen http GET kéréssel kérhető le.
A cikkben tárgyalt ügyfélkódtár-metódusok a Blob url-címről és a Blokk letiltása URL-ből REST API-műveleteket használják. Ezek a módszerek olyan másolási forgatókönyvek esetében ajánlottak, ahol adatokat szeretne áthelyezni egy tárfiókba, és rendelkeznie kell a forrásobjektum URL-címével. Az aszinkron ütemezést használó másolási műveletekről lásd : Blob másolása aszinkron ütemezéssel a Go használatával.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Go 1.18+
Saját környezet beállítása
Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a Go Azure Blob Storage-ügyfélmoduljának használatára. A lépések közé tartozik a modul telepítése, az elérési utak hozzáadása import
és egy engedélyezett ügyfélobjektum létrehozása. További részletekért tekintse meg az Azure Blob Storage és a Go használatának első lépéseit.
Modulok telepítése
Telepítse az azblob modult a következő paranccsal:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
A Microsoft Entra-azonosítóval való hitelesítéshez (ajánlott) telepítse a azidentity
modult a következő paranccsal:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Importálási útvonalak hozzáadása
A kódfájlban adja hozzá a következő importálási útvonalakat:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Ezek az importálási útvonalak az első lépésekhez szükséges minimumot jelölik. A cikkben szereplő néhány példakód további importálási útvonalakat igényelhet. További részletekért és példahasználatért tekintse meg a kódmintákat.
Ügyfélobjektum létrehozása
Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy ügyfélobjektumot az azblob használatával . NewClient. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential
engedélyezés céljából:
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
}
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a másolási művelet végrehajtásához szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített szerepkörű Storage Blob Data Közreműködő vagy újabb szerepkörre van szüksége. További információkért tekintse meg a Blob url-címről vagy a Letiltás URL-címről való elhelyezésére vonatkozó engedélyezési útmutatót.
Blobok másolása forrásobjektum URL-címéről
A Put Blob From URL
művelet létrehoz egy új blokkblobot, amelyben a blob tartalma egy adott URL-címről lesz beolvasva. A művelet szinkron módon fejeződik be.
A forrás bármilyen objektum lekérhető egy szabványos HTTP GET kéréssel a megadott URL-címen. Ide tartoznak a blokkblobok, a hozzáfűző blobok, a lapblobok, a blob pillanatképei, a blobverziók vagy az Azure-on belüli vagy azon kívüli akadálymentes objektumok.
Ha a forrásobjektum blokkblob, a program minden véglegesített blobtartalmat átmásol. A célblob tartalma megegyezik a forrás tartalmával, de a véglegesített blokkok listája nem marad meg, és a nem véglegesített blokkok nem lesznek másolva.
A cél mindig egy blokkblob, vagy egy meglévő blokkblob, vagy a művelet által létrehozott új blokkblob. Egy meglévő blob tartalma felülíródik az új blob tartalmával.
A Put Blob From URL
művelet mindig a teljes forrásblobot másolja át. A bájtok vagy blokkok tartományának másolása nem támogatott. Ha egy blokkblob tartalmának részleges frissítését forrás URL-címmel szeretné végrehajtani, használja a Blokkblokk mentése URL-api-t és a .Put Block List
Ha többet szeretne megtudni a műveletről, beleértve a Put Blob From URL
blobméret korlátozásait és a számlázási szempontokat, olvassa el a Blob elhelyezése URL-címből című megjegyzést.
Blob másolása forrásobjektum URL-címéről
Ez a szakasz áttekintést nyújt a Go-hoz készült Azure Storage ügyfélkódtár által a másolási művelet forrásobjektum URL-címéről történő végrehajtásához.
A következő metódus körbefuttatja a Blob elhelyezése URL-címből REST API-műveletet, és létrehoz egy új blokkblobot, amelyben a blob tartalma egy adott URL-címről lesz beolvasva:
Ez a módszer olyan esetekben ajánlott, amikor adatokat szeretne áthelyezni egy tárfiókba, és rendelkeznie kell a forrásobjektum URL-címével.
Nagy objektumok esetén dönthet úgy, hogy az egyes blokkokkal dolgozik. Az alábbi metódus körbefuttatja a Put Block From URL REST API-műveletet. Ez a metódus létrehoz egy új blokkot, amely egy blob részeként lesz véglegesítve, ahol a tartalom egy forrás URL-címről lesz beolvasva:
Blob másolása egy Azure-beli forrásból
Ha egy azure-beli forrásból másol egy blobot, a forrásblobhoz való hozzáférés a Microsoft Entra-azonosítón (ajánlott), a közös hozzáférésű jogosultságkódon (SAS) vagy egy fiókkulcson keresztül engedélyezhető.
Az alábbi példakód egy forrásblob Azure-beli másolásának forgatókönyvét mutatja be. Ebben a példában a célblob Cool
hozzáférési szintjét is beállítjuk az UploadBlobFromURLOptions struktúra használatára.
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)
}
Az alábbi példa a mintahasználatot mutatja be:
// 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)
Blob másolása az Azure-on kívüli forrásból
Másolási műveletet bármely olyan forrásobjektumon végrehajthat, amely http GET kéréssel kérhető le egy adott URL-címen, beleértve az Azure-on kívüli akadálymentes objektumokat is. Az alábbi példakód egy blob akadálymentes forrásobjektum URL-címéről történő másolásának forgatókönyvét mutatja be.
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)
}
Az alábbi példa a mintahasználatot mutatja be:
externalURL := "<source-url>"
destBlob = destClient.ServiceClient().NewContainerClient("destination-container").NewBlockBlobClient("destination-blob-2")
copyFromExternalSource(externalURL, destBlob)
Források
A blobok Go-hoz készült Azure Blob Storage-ügyfélkódtár használatával történő másolásával kapcsolatos további információkért tekintse meg az alábbi erőforrásokat.
Kódminták
- Kódminták megtekintése ebből a cikkből (GitHub)
REST API-műveletek
Az Azure SDK for Go olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert Go-paradigmákon keresztül. A cikkben tárgyalt ügyfélkódtár-metódusok a következő REST API-műveleteket használják:
- Blob elhelyezése URL-címről (REST API)
- Blokk elhelyezése URL-címről (REST API)
Ügyfélmodul erőforrásai
Kapcsolódó tartalom
- Ez a cikk a Blob Storage Go-hoz készült fejlesztői útmutatójának része. További információkért tekintse meg a Go-alkalmazás buildeléséhez kapcsolódó fejlesztői útmutatók teljes listáját.