- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含多个容器和 blob 的 azure 存储帐户:
container1 -> blob1.txt, blob2.jpg
container2 -> blob1.png
container3 ->
我想生成一个只能从container1读取和写入的SAS。
第一个问题:我应该使用generateAccountSASQueryParameters还是generateBlobSASQueryParameters来执行此操作?
第二个问题:我一直在尝试使用generateBlobSASQueryParameters 来实现这一点。但是,我不断收到此错误:
<Error>
<Code>AuthenticationFailed</Code>
<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is
formed correctly including the signature. RequestId:1db4c573-201e-0083-2396-ab3df5000000
Time:2019-12-05T18:05:52.8934222Z
</Message>
<AuthenticationErrorDetail>
The specified signed resource is not allowed for the this resource level
</AuthenticationErrorDetail>
</Error>
我用来执行此操作的代码在这里:
const account = "storageaccountname";
const accountKey = "<myKey>";
const sharedKeyCredential = new AzureStorageBlob.StorageSharedKeyCredential(account, accountKey);
const blobServiceClient = new AzureStorageBlob.BlobServiceClient(
`https://${account}.blob.core.windows.net`,
sharedKeyCredential
);
const containerClient = blobServiceClient.getContainerClient('container1')
const sas = AzureStorageBlob.generateBlobSASQueryParameters({
containerName: 'container1',
protocol: AzureStorageBlob.SASProtocol.HTTPS,
permissions: 'rw',
resourceTypes: 'sco',
startsOn: new Date(),
expiresOn: new Date(new Date().valueOf() + 86400),
}, sharedKeyCredential)
res.status(200).json(`https://${account}.blob.core.windows.net/?${sas.toString()}`)
感谢任何帮助。谢谢
最佳答案
根据我的测试,如果你想创建一个SAS token来在一个容器中创建和读取blob,请引用以下代码
npm install @azure/storage-blob
var storage = require("@azure/storage-blob")
async function generateSasToken1() {
const accountname ="blobstorage0516";
const key = "";
const cerds = new storage.StorageSharedKeyCredential(accountname,key);
var startDate = new Date();
var expiryDate = new Date();
startDate.setTime(startDate.getTime() - 5*60*1000);
expiryDate.setTime(expiryDate.getTime() + 24*60*60*1000);
const containerName="test";
// if the container does not exit, please run the following code to create
// const blobServiceClient = new storage.BlobServiceClient(
// `https://${accountname}.blob.core.windows.net`,
// sharedKeyCredential
// );
// const containerClient = blobServiceClient.getContainerClient(containerName)
// await containerClient.create()
const containerSAS = storage.generateBlobSASQueryParameters({
expiresOn : expiryDate,
permissions: storage.ContainerSASPermissions.parse("rwl"),
protocol: storage.SASProtocol.Https,
containerName: containerName,
startsOn: startDate,
version:"2018-03-28"
},cerds).toString();
console.log(containerSAS);
const containerUrl="https://"+accountname+".blob.core.windows.net/"+containerName+"?"+containerSAS
const client =new storage.ContainerClient(containerUrl);
for (let index = 0; index < 7; index++) {
// Create a blob(write)
const content = "hello";
const blobName = "newblob" + new Date().getTime();
const blobClient = client.getBlobClient(blobName);
const blockBlobClient = blobClient.getBlockBlobClient();
const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
console.log(`Uploaded block blob ${blobName} successfully`, uploadBlobResponse.requestId);
}
// List blobs(list)
let i = 1;
let iter = await client.listBlobsFlat();
for await (const blob of iter) {
console.log(`Blob ${i++}: ${blob.name}`);
}
// download blob(read)
const blobClient = client.getBlobClient("test.json");
const downloadBlockBlobResponse = await blobClient.download(0);
console.log(
"Downloaded blob content",
await streamToString(downloadBlockBlobResponse.readableStreamBody)
);
}
async function streamToString(readableStream) {
return new Promise((resolve, reject) => {
const chunks = [];
readableStream.on("data", (data) => {
chunks.push(data.toString());
});
readableStream.on("end", () => {
resolve(chunks.join(""));
});
readableStream.on("error", reject);
});
}
generateSasToken1()
.then(() => {
console.log("Successfully executed sample.");
})
.catch((err) => {
console.log(err.message);
});
更多详情请引用document
关于node.js - azuregenerateAccountSAS 与generateBlobSAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59201013/
我用运行 Node node --debug app OR node --debug-brk app 它有反应 debugger listening on port 5858 Express serv
这个问题在这里已经有了答案: What is the difference between (int *i) and (int* i) in context of both C and C++? [
我有一个应用程序,它通过消息队列将数据库写入命令分派(dispatch)给工作人员(数量非常大),因此无法保证它们的接收顺序。 我有两个 Node ,例如“Account”和“Media”。在此假设的
有没有办法在调用 ts-node 时将选项传递给 Node ?我正在尝试在 Node 中使用一个实验性功能,如果它能与 ts-node 一起使用,那就太好了。 这就是我目前正在做的事情: ts-nod
我有一个容器化的Node应用程序,它在DigitalOcean服务器上运行。当我更新服务器上的应用程序时,该应用程序必须关闭一小段时间。为了能够更新应用程序并避免停机,我目前正在阅读零停机时间部署/蓝
我正在编写一个 Node.js 应用程序。我正在使用 request 和 Cheerio 加载一组 URL 并获取该网站的大量信息,现在假设我想要获取的只是标题: var urls = {"url_1
如果不弹出以下错误,我无法安装任何 Node.js 模块。错误代码引用package.json文件。如果知道为什么会发生这种情况,我们将不胜感激。 最佳答案 这些不是错误,它们只是警告。一切都应该如此
如果我运行(从我的项目目录中): supervisor javascripts/index.js 我得到:/usr/bin/env: Node :没有这样的文件或目录 如果我运行: node java
我已遵循使用 Node-Inspector 的所有步骤 但是当我打开应用程序时,我在控制台上看不到任何脚本或日志。 我的应用程序在端口 4000 上运行。我认为唯一可能发生冲突的是端口 8080 上的
我在android中使用rxjava2,有时会遇到这样的问题: Observable.fromArray( // maybe a list about photo url in SD
我目前正在使用 Node 光纤来编写同步服务器端代码。我主要通过 try-catch block 进行错误处理,但外部库或其他小部分异步代码中总是有可能发生错误。我正在考虑使用新的域功能来尝试将这些错
看起来node-debug是node-inspector周围的一个shell?分别什么时候应该使用? 最佳答案 如果您安装node-debug,您只能访问node-debug命令。 如果您安装node
我目前正在代理后面工作,该代理不允许我执行此命令的 HTTP GET 请求阶段: Node node-sass/scripts/build.js 请求阶段: gyp http GET https://
听说node js可以用在服务端。我以前用过jsp。 jsp页面内部的java代码对客户端是不可见的。如果 Node js 只是 javascript,那么它如何对客户端不可见? 最佳答案 首先,No
我正在为 Node native 插件从 node-waf 构建迁移到 node-gyp 构建系统。 node-gyp 说它支持多个目标版本,但我在使用 node-gyp 时找不到如何指定目标 Nod
给定一个 $node ,我正在尝试在以下两种输出该 $node 的方式之间做出决定。 要么 $output = theme('node', $node); 或 node_build_content($
如果package.json中的窗口A打开一个新窗口B,node-main如何访问它?这是我的代码: package.json { "main": "index.html",
我试图在我的 xml 中的特定节点 ( ) 之前插入一个注释节点。这是它的方法: function test(xmlResponse) { var parser = new DOMParse
我正在尝试做npm install wrtc使用 Node 版本 16.14.0 但这还没有完成。它在给npm error code 1所以我试图将 Node 版本更改为以前的 lts 14.19.0
当我在 Visual Studio 中运行 Node.js 应用程序时,我收到以下消息:DeprecationWarning: 'node --debug' 和 'node --debug-brk'
我是一名优秀的程序员,十分优秀!