Azure Functions의 Azure SDK for Nodejs를 사용하여 SAS가 포함된 Blob URL 가져오기
준비
Kudu Azure SDK for Node를 사용합니다.설치 js
참고 자료
Azure Functions에서 npm 모듈 사용
실시
var azure = require("azure");
//ここを書き換える
var storageAccount = "your-storage-account";
var storageAccessKey = "your-storage-access-key";
var container = "your-container-name";
//ここを書き換える
var blobService = azure.createBlobService(storageAccount, storageAccessKey);
function getSAS(context, blob) {
var startDate = new Date();
startDate.setMinutes(startDate.getMinutes() - 5 );
var expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 10);
context.log("blobService: " + JSON.stringify(blobService.host));
context.log("startDate: " + startDate.toISOString());
context.log("expiryDate: " + expiryDate.toISOString());
var sharedAccessPolicy = {
AccessPolicy: {
Permissions: azure.Constants.BlobConstants.SharedAccessPermissions.READ,
Start: startDate.toISOString(),
Expiry: expiryDate.toISOString()
}
};
context.log(JSON.stringify(sharedAccessPolicy));
var signature = blobService.generateSharedAccessSignature(container, blob, sharedAccessPolicy);
console.log("signature: " + signature);
return signature;
}
module.exports = function(context, req) {
context.log("Node.js HTTP trigger function processed a request. RequestUri=%s", req.originalUrl);
var fileKey;
if (req.query.fileKey|| (req.body && req.body.fileKey)) {
fileKey = (req.query.fileKey || req.body.fileKey);
}
if (!fileKey) {
context.res = {
status: 400,
body: { result: "ng", error: "Please pass a fileKey on the query string or in the request body" }
};
context.done();
return;
}
var sas = getSAS(context, fileKey);
var url = blobService.getUrl(container,fileKey,sas);
console.log(url);
var responceBody = {
url: url
};
context.res = {
// status: 200, /* Defaults to 200 */
body: responceBody
};
context.done();
};
위의 예에서는 현재 시점의 5분 전부터 10분 동안 유효한 SAS를 발행합니다.실행 시 요구 사항 본문 (예)
{
"fileKey": "sastestdir/sastestfile.txt"
}
여러 액세스 정책 권한 지정
var sharedAccessPolicy = {
AccessPolicy: {
Permissions: azure.Constants.BlobConstants.SharedAccessPermissions.READ + azure.Constants.BlobConstants.SharedAccessPermissions.LIST,
Start: startDate.toISOString(),
Expiry: expiryDate.toISOString()
}
};
.READ는 문자열의 "r",LIST가 "l"이니까.인삼으로 연결해서 건네주면 돼.
Permissions를 변경하면 쿼리 문자열의 sp=r 또는 sp=rl
url 확인 가능합니다.
만약 무슨 잘못이 있거나 이렇게 하는 것이 더 좋다면 반드시 댓글에 지적하고 건의해 주십시오
Reference
이 문제에 관하여(Azure Functions의 Azure SDK for Nodejs를 사용하여 SAS가 포함된 Blob URL 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Banchi0123/items/e1f02104f1fea6ebe34e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)