diff --git a/ChangeLog.md b/ChangeLog.md index 7ab36027d..5cf5dbd88 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -4,6 +4,10 @@ ## Upcoming Release +Blob: + +- GetBlob on Archive tier blobs now fails as expected. + ## 2024.10 Version 3.33.0 General: diff --git a/src/blob/handlers/BlobHandler.ts b/src/blob/handlers/BlobHandler.ts index ef3625cee..9d5f9f4df 100644 --- a/src/blob/handlers/BlobHandler.ts +++ b/src/blob/handlers/BlobHandler.ts @@ -80,6 +80,10 @@ export default class BlobHandler extends BaseHandler implements IBlobHandler { options.modifiedAccessConditions ); + if (blob.properties.accessTier === Models.AccessTier.Archive) { + throw StorageErrorFactory.getBlobArchived(context.contextId!); + } + if (blob.properties.blobType === Models.BlobType.BlockBlob) { return this.downloadBlockBlobOrAppendBlob(options, context, blob); } else if (blob.properties.blobType === Models.BlobType.PageBlob) { diff --git a/tests/blob/apis/blob.test.ts b/tests/blob/apis/blob.test.ts index 6b33cedf4..80d79cc01 100644 --- a/tests/blob/apis/blob.test.ts +++ b/tests/blob/apis/blob.test.ts @@ -253,6 +253,22 @@ describe("BlobAPIs", () => { assert.fail(); }); + it("download should not work when blob in Archive tier", async () => { + try { + + const result = await blobClient.setAccessTier("Archive"); + assert.equal( + result._response.request.headers.get("x-ms-client-request-id"), + result.clientRequestId + ); + await blobClient.download(0); + } catch (error) { + assert.deepStrictEqual(error.statusCode, 409); + return; + } + assert.fail(); + }); + it("download should not work with conditional header ifUnmodifiedSince @loki @sql", async () => { try { await blobClient.download(0, undefined, {