我收到一个奇怪的导入错误:
./src/components/pages/DocumentationPage.tsx
Attempted import error: 'ContainerSASPermissions' is not exported from '@azure/storage-blob'.
这是 GitHub 中的 azure 文档中实现的方式:list-blobs-from-container-sas-token
我已经安装了包 "@azure/storage-blob": "^12.12.0"
,它位于 package.json
文件中的依赖项下。
您还可以在屏幕截图中看到该软件包已下载到本地。
我必须更新我的 tsconfig.json 或路径吗?
作为信息,该项目是新的,但其他包,例如 @tanstack/react-query 工作没有问题。
最佳答案
我在我的环境中进行了尝试并得到了以下结果:
要使用 Typescript 在容器级别创建 SAS token , 你可以使用这个 MS-DOCUMENT
在 Node 中运行示例之前,请安装 typescript 编译器:
npm install -g typescript
对于使用 azure-blob-storage 和 azure-identity:
npm install @azure/storage-blob
npm install @azure/identity
代码(demo.ts):
import {BlobServiceClient,
ContainerSASPermissions,
generateBlobSASQueryParameters,
SASProtocol,ContainerClient} from "@azure/storage-blob";
import { DefaultAzureCredential } from "@azure/identity";
async function createContainerSas(){
// Get environment variables
const accountName = "venkat123";
const containerName = "test";
const TEN_MINUTES = 10 * 60 * 1000;
const NOW = new Date();
const TEN_MINUTES_BEFORE_NOW = new Date(NOW.valueOf() - TEN_MINUTES);
const TEN_MINUTES_AFTER_NOW = new Date(NOW.valueOf() + TEN_MINUTES);
// Best practice: use managed identity - DefaultAzureCredential
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);
// Best practice: delegation key is time-limited
// When using a user delegation key, container must already exist
const userDelegationKey = await blobServiceClient.getUserDelegationKey(
TEN_MINUTES_BEFORE_NOW,
TEN_MINUTES_AFTER_NOW
);
// Best practice: SAS options are time-limited
const sasOptions = {
containerName,
permissions: ContainerSASPermissions.parse("c"),
protocol: SASProtocol.HttpsAndHttp,
startsOn: TEN_MINUTES_BEFORE_NOW,
expiresOn: TEN_MINUTES_AFTER_NOW
};
const sasToken = generateBlobSASQueryParameters(
sasOptions,
userDelegationKey,
accountName
).toString();
console.log(`SAS token for blob container is: ${sasToken}`);
return `${ContainerClient.url}?${sasToken}`;
}
createContainerSas()
控制台:
要在容器级别检查 SAS token
,我在浏览器中执行以下命令。
命令:
https://<account name>.blob.core.windows.net/test1?restype=container&comp=list&<SAS token>
浏览器:
关于typescript - ContainerSASPermissions 未从 Azure 存储 Blob 导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74784751/