typescript - ContainerSASPermissions 未从 Azure 存储 Blob 导出

标签 typescript azure azure-blob-storage

我收到一个奇怪的导入错误:

./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 工作没有问题。

ScreenShot

最佳答案

我在我的环境中进行了尝试并得到了以下结果:

要使用 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()

控制台:

enter image description here

要在容器级别检查 SAS token ,我在浏览器中执行以下命令。

命令:

https://<account name>.blob.core.windows.net/test1?restype=container&comp=list&<SAS token>

浏览器:

enter image description here

关于typescript - ContainerSASPermissions 未从 Azure 存储 Blob 导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74784751/

相关文章:

angular - 这种在 Angular 中创建 HTTP 服务的方法是否正确?

typescript - Vuex setter/getter 不会因商店突变而刷新

typescript - 类型 'T' 不满足约束 'string | number | symbol' 。类型 'T' 不可分配给类型 'symbol'

azure - 具有非字母数字集合名称的 Cosmos db sql 查询

java - 如何使用java代码将文件作为blob从互联网上传到azure存储?

typescript - 基于另一个过滤对象数组 - Ramda 函数式风格

azure - 如何删除Azure中资源组中的所有公共(public)IP地址

azure - 以编程方式动态生成 Azure Function 的访问代码

python - 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

c# - 从 url 下载文件并保存到 blob