-
Notifications
You must be signed in to change notification settings - Fork 47
/
lease-container.ts
78 lines (65 loc) · 2.56 KB
/
lease-container.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Import dependencies
import {
BlobServiceClient,
BlobLeaseClient,
ContainerClient
} from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import * as dotenv from 'dotenv';
// Load environment variables from .env file
dotenv.config();
// Replace with your actual storage account name
const accountName = "<storage-account-name>";
async function main(): Promise<void> {
// Create service client from DefaultAzureCredential
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);
const blobContainerClient = blobServiceClient
.getContainerClient("sample-container");
// Acquire lease
const leaseClient = await acquireContainerLeaseAsync(blobContainerClient);
// Output the blob lease status for testing
console.log((await blobContainerClient.getProperties()).leaseState);
// Renew lease
await renewContainerLeaseAsync(blobContainerClient, leaseClient.leaseId);
// Release lease
await releaseContainerLeaseAsync(blobContainerClient, leaseClient.leaseId);
// Output the blob lease status for testing
console.log((await blobContainerClient.getProperties()).leaseState);
// Break lease
//await breakContainerLeaseAsync(blobClient);
}
// <Snippet_AcquireContainerLease>
async function acquireContainerLeaseAsync(blobContainerClient: ContainerClient) {
const leaseClient: BlobLeaseClient = blobContainerClient.getBlobLeaseClient();
await leaseClient.acquireLease(30);
return leaseClient;
}
// </Snippet_AcquireContainerLease>
// <Snippet_RenewContainerLease>
async function renewContainerLeaseAsync(blobContainerClient: ContainerClient, leaseID: string) {
const leaseClient: BlobLeaseClient = blobContainerClient.getBlobLeaseClient(leaseID);
await leaseClient.renewLease();
}
// </Snippet_RenewContainerLease>
// <Snippet_ReleaseContainerLease>
async function releaseContainerLeaseAsync(blobContainerClient: ContainerClient, leaseID: string) {
const leaseClient: BlobLeaseClient = blobContainerClient.getBlobLeaseClient(leaseID);
await leaseClient.releaseLease();
}
// </Snippet_ReleaseContainerLease>
// <Snippet_BreakContainerLease>
async function breakContainerLeaseAsync(blobContainerClient: ContainerClient, breakPeriod: number) {
const leaseClient: BlobLeaseClient = blobContainerClient.getBlobLeaseClient();
await leaseClient.breakLease(breakPeriod);
}
// </Snippet_BreakContainerLease>
main()
.then(() => console.log('success'))
.catch((err: unknown) => {
if (err instanceof Error) {
console.log(err.message);
}
});