Azure Functions(TypeScript)でAzurite上のBlobにアクセスする。
前提
・Azuriteがインストール済み
・Microsoft Azure Storage Explorer(確認のためなのでなくても可ですが、説明で使用)
内容
こちらをテンプレートとして使います。
https://github.com/xiaotiantakumi/az-func-ts-starter
こちらを参考に進めました。
https://docs.microsoft.com/en-us/samples/azure/azure-sdk-for-js/storage-blob-typescript/
この中のconnectionStringAuth.tsが対象となります。
SampleTrigger/index.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 | import { AzureFunction, Context, HttpRequest } from "@azure/functions" ; import { BlobServiceClient } from "@azure/storage-blob" ; const httpTrigger: AzureFunction = async function ( context: Context, req: HttpRequest ): Promise<void> { // Create Blob Service Client from Account connection string or SAS connection string // Account connection string example - `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net` // SAS connection string example - `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString` const STORAGE_CONNECTION_STRING = process.env.STORAGE_CONNECTION_STRING || "" ; // Note - Account connection string can only be used in node. const blobServiceClient = BlobServiceClient.fromConnectionString( STORAGE_CONNECTION_STRING ); let i = 1; for await (const container of blobServiceClient.listContainers()) { console.log(`Container ${i++}: ${container.name}`); } // Create a container const containerName = `newcontainer${ new Date().getTime()}`; const containerClient = blobServiceClient.getContainerClient(containerName); const createContainerResponse = await containerClient.create(); console.log( `Create container ${containerName} successfully`, createContainerResponse.requestId ); // Delete container await containerClient. delete (); console.log( "deleted container" ); }; export default httpTrigger; |
local.settings.jsonにSTORAGE_CONNECTION_STRINGを追加する。
1 2 3 4 5 6 7 8 | { "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "node", "AzureWebJobsStorage": "", "STORAGE_CONNECTION_STRING":"AccountName=devstoreaccount1;〜〜;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" } } |
STORAGE_CONNECTION_STRINGの値は以下から取得できます。

動作確認
実際にHTTPリクエストを投げてみると以下のようにコンソールにコンテナーの内容が表示されました。
1 2 3 4 5 6 7 8 9 | [start:*func] [2022-07-25T00:17:08.588Z] Container 1: azure-webjobs-hosts [start:*func] [2022-07-25T00:17:08.588Z] Container 2: azure-webjobs-secrets [start:*func] [2022-07-25T00:17:08.588Z] Container 3: excel-container [start:*func] [2022-07-25T00:17:08.588Z] Container 4: newcontainer1658277761179 [start:*func] [2022-07-25T00:17:08.588Z] Container 5: newcontainer1658282166193 [start:*func] [2022-07-25T00:17:08.589Z] Container 6: newcontainer1658293007614 [start:*func] [2022-07-25T00:17:08.589Z] Container 7: newcontainer1658295155183 [start:*func] [2022-07-25T00:17:08.595Z] Create container newcontainer1658708228589 successfully 06ef0d7c-fcd5-474f-975d-2506c209befd [start:*func] [2022-07-25T00:17:08.663Z] Executed 'Functions.BlobSampleTrigger' (Succeeded, Id=a6437882-15f3-4fb6-b3ad-60b1ba229add, Duration=167ms) |
Azure ストレージエクスプロラーでも確認しました。

ディスカッション
コメント一覧
まだ、コメントがありません