Blob törlése és visszaállítása a Go használatával
Ez a cikk bemutatja, hogyan törölhet blobokat a Go-hoz készült Azure Storage-ügyfélmodullal, és hogyan állíthatja vissza a helyreállíthatóan törölt blobokat a megőrzési időszak alatt.
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 blob törléséhez vagy a helyreállíthatóan törölt blob visszaállítá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 törlése (REST API) és az Undelete Blob (REST API) engedélyezési útmutatóját.
Blob törlése
Feljegyzés
Ha a blob helyreállítható törlése engedélyezve van egy tárfiókhoz, nem hajthat végre végleges törlést ügyfélkódtár-metódusokkal. A cikkben ismertetett módszerekkel a helyreállíthatóan törölt blobok, blobverziók vagy pillanatképek a megőrzési időszak lejártáig elérhetők maradnak, és ekkor véglegesen törlődnek. A mögöttes REST API-művelettel kapcsolatos további információkért lásd a Blob törlése (REST API) című témakört.
Blob törléséhez hívja meg a következő metódust:
Az alábbi példa egy blobot töröl:
func deleteBlob(client *azblob.Client, containerName string, blobName string) {
// Delete the blob
_, err := client.DeleteBlob(context.TODO(), containerName, blobName, nil)
handleError(err)
}
Ha a blob rendelkezik társított pillanatképekkel, a blob törléséhez törölnie kell az összes pillanatképét. Az alábbi példa töröl egy blobot és annak pillanatképeit:
func deleteBlobWithSnapshots(client *azblob.Client, containerName string, blobName string) {
// Delete the blob and its snapshots
_, err := client.DeleteBlob(context.TODO(), containerName, blobName, &blob.DeleteOptions{
DeleteSnapshots: to.Ptr(blob.DeleteSnapshotsOptionTypeInclude),
})
handleError(err)
}
Ha csak a pillanatképeket szeretné törölni, és magát a blobot nem, az értéket DeleteSnapshotsOptionTypeOnly
átadhatja a DeleteSnapshots
paraméternek.
Törölt blob visszaállítása
A blob helyreállítható törlésével megóvhatja az egyéni blobokat és azok verzióit, pillanatképeit és metaadatait a véletlen törléstől és felülírástól, mivel ezzel a művelettel a rendszer egy meghatározott ideig még megőrzi a törölt adatokat. A megőrzési időszak alatt a blobot visszaállíthatja a törléskor érvényes állapotába. A megőrzési időszak lejárta után a blob véglegesen törlődik. A blobok helyreállítható törlésével kapcsolatos további információkért lásd a blobok helyreállítható törlését ismertető szakaszt.
Az Azure Storage-ügyfélkódtárak használatával helyreállíthatja a helyreállíthatóan törölt blobokat vagy pillanatképeket.
A helyreállíthatóan törölt blobok visszaállításának módjától függ, hogy a tárfiók engedélyezve van-e a blobok verziószámozása. A blobok verziószámozásával kapcsolatos további információkért lásd a Blob verziószámozását. A forgatókönyvtől függően tekintse meg az alábbi szakaszok egyikét:
Helyreállíthatóan törölt objektumok visszaállítása, ha a verziószámozás le van tiltva
Ha vissza szeretné állítani a törölt blobokat, ha a verziószámozás le van tiltva, hívja meg a következő módszert:
Ez a módszer visszaállítja a helyreállíthatóan törölt blobok és a kapcsolódó helyreállíthatóan törölt pillanatképek tartalmát és metaadatait. A metódus nem törölt blob meghívásának nincs hatása.
func restoreDeletedBlob(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Restore the deleted blob
_, err := blobClient.Undelete(context.TODO(), &blob.UndeleteOptions{})
handleError(err)
}
Helyreállíthatóan törölt objektumok visszaállítása a verziószámozás engedélyezésekor
Ha egy tárfiók úgy van konfigurálva, hogy engedélyezze a blobok verziószámozását, a blob törlésével a blob aktuális verziója lesz az előző verzió. Ha vissza szeretne állítani egy helyreállíthatóan törölt blobot, ha engedélyezve van a verziószámozás, másolja az előző verziót az alapblobba. A következő módszert használhatja:
Az alábbi példakód azonosítja a törölt blob egy verzióját, és visszaállítja azt az alapblobba másolással:
func restoreDeletedBlobVersion(client *azblob.Client, containerName string, blobName string, versionID string) {
// Reference the blob as a client object
baseBlobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
blobVersionClient, err := baseBlobClient.WithVersionID(versionID)
handleError(err)
// Restore the blob version by copying it to the base blob
_, err = baseBlobClient.StartCopyFromURL(context.TODO(), blobVersionClient.URL(), nil)
handleError(err)
}
Feljegyzés
Az útmutatóban szereplő kódminták az Azure Blob Storage és a Go használatának megkezdéséhez nyújtanak segítséget. Az alkalmazás igényeinek megfelelően módosítania kell a hibakezelést és Context
az értékeket.
Források
A blobok törléséről és a törölt blobok visszaállításáról a Go-hoz készült Azure Blob Storage-ügyfélmodul használatával az alábbi forrásokból tudhat meg többet.
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 blobok törlésére és a törölt blobok visszaállítására szolgáló ügyfélkódtár-metódusok a következő REST API-műveleteket használják:
- Blob törlése (REST API)
- Undelete Blob (REST API)
Ügyfélmodul erőforrásai
Lásd még
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.