# @azbake/ingredient-storage 中文文档

规范地址：https://npmcn.com/package/%40azbake/ingredient-storage/

版本：0\.6\.0
npm 元数据更新时间：2026-08-18T19:06:19.811Z
中文译文更新时间：2026-11-07T16:56:56.960Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40azbake/ingredient-storage
原文对照：https://npmcn.com/package/%40azbake/ingredient-storage/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：183 kB，44 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：4 个
- peer 依赖：@azbake/core \*，@azure/ms-rest-nodeauth \*
- 首次发布：2019-03-06T22:47:54.111Z
- 最新版本发布：2026-08-18T19:06:19.623Z
- 近 30 天下载量：4294（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：75（近 12 个月 7 个）

## 中文简介

用于部署存储账户的材料

## 安装

```sh
npm install @azbake/ingredient-storage
```

也可以使用：`pnpm add @azbake/ingredient-storage`、`yarn add @azbake/ingredient-storage`、`bun add @azbake/ingredient-storage`

## README

## 更改日志

-   [@azbake/ingredient-storage (英语)](https://npmcn.com/package/%40azbake/ingredient-storage/CHANGELOG.md)

## 概览

存储成分是巴克的插件. 当包含在食谱中时, 这将创建一个标准存储账户 。 是否服务 `blob`, (中文(简体) ), `file`, (中文(简体) ), `disk`, (中文(简体) ), `queue`,或 `table` 存储在此资源上被挂载,但模板中没有定义,只创建了逻辑构造.

## 使用量

这通常将作为一个依赖资源列入一种食谱。 可以设置一个 **独立** 但这不是典型的列入。 计量和诊断日志被记录到存储分析默认启用.

### 食谱

```yaml
name: My package
shortName: mypkg
version: 0.0.1
ingredients:
  - "@azbake/ingredient-storage@~0"
parallelRegions: false
resourceGroup: true
variables:
  #"true" or "false" strings.  Defaults to "true" if unspecified.
  blobDiagnosticHourlyMetricsEnabled: "true"
  #Number of days to retain hourly metrics
  blobDiagnosticHourlyMetricsRetentionDays: 12
  #"true" or "false" strings.  Defaults to "true" if unspecified.
  blobDiagnosticMinuteMetricsEnabled: "false"
  #Number of days to retain minute metrics
  blobDiagnosticMinuteMetricsRetentionDays: 10    
    #"true" or "false" strings.  Defaults to "true" if unspecified.
  blobDiagnosticLoggingEnabled: "true"
  #Number of days to retain minute metrics
  blobDiagnosticLoggingRetentionDays: 10    
recipe:
  mypkg-storage:
    properties:
      type: "@azbake/ingredient-storage"
      source: ""
      parameters:
        storageAccountName: "[storage.create_resource_name()]"
```

| 参数 | 所需经费 | 默认 | 说明 |
| --- | --- | --- | --- |
| 存储账户Name | 对 |  | 存储账户资源的名称 |
| 存储 Kind | 没有 | `StorageV2` | 设置存储账户类型 |
| 存储 Tier | 没有 | `Standard` | 设置存储账户的定价等级 |
| 地点 | 没有 | 父资源组 | 此资源的位置 |
| 存储账户类型 | 没有 |  | 存储账户的类型 [文档](https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/2018-11-01/storageaccounts) |
| 存储 AccessTier | 没有 |  | 选择 **热** 或者说 _凉了_ 存储账户的分级。 见 [文档](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-storage-tiers) |
| 集装箱 | 是( 当 `source` 居住) |  | 要上传特定内容的容器 `source` 改为: 仅在 `source` 已指定. |
| 上传路径 | 是( 当 `source` 居住) |  | 指定容器内上传路径 `source` 改为: 仅在 `source` 已指定. |
| 部署 | 没有 | 真实 | 确定是否部署服务账户的旗帜 。 只需通过将上下文添加到容器中即可跳过部署 `source` |
| 调色调 | 没有 | 虚假 | 在指定的路径中遇到zip文件时, 确定是否打开并上传的旗帜 . |
| rg 覆盖 | 没有 |  | 指定一个资源组覆盖存储账户,如果与烘焙食谱的主要资源组不同. |
| 允许Blob 公共访问 | 没有 | `false` _(不设担保基准翻转)_ | 可选的 省略或 `false`,以匿名公共blob访问方式部署账户 **已禁用**时 `true`并盖上已核准的例外标记 `hchb-policy-exempt-anon-blob = true`。 。 。 . **打破变化:** 截至本版本,基线是明确的 `false` (财产被写出;之前的版本使财产没有被写出(背向兼容无事). 依赖账户在重新部署后维持现有匿名访问状态的食谱现在必须明确规定 `allowBlobPublicAccess: true` 如果状态是 `true`。 。 。 . |
| 允许公共网络访问 | 没有 | _(未设置 —— 仅标记为分块, 属性未写入)_ | 可选 (Pass-1 stub). 何时 `true`,印出已核准的例外标记 `hchb-policy-exempt-public-network = true`; 数据 `publicNetworkAccess` 属性本身是 **没有** 写在本传. 何时 `false` 或省略,不写标签或财产。 见 [公共网络接入](https://npmcn.com/package/%40azbake/ingredient-storage/#readme-public-network-access-pass-1-stub--tag-only)。 。 。 . |

| 变量 | 所需经费 | 默认 | 说明 |
| --- | --- | --- | --- |
| blobDiagnotic Hourly Metrics 启用 | 没有 | "对" | 允许记录小时度量衡以存储分析. 目前仅接受"真"/"假"作为字符串. |
| blob诊断连续计量保留日 | 没有 | 10个 | 储存分析中计时数据保留. |
| blob诊断最小量 | 没有 | "对" | 允许记录小度度量以存储分析。 目前仅接受"真"/"假"作为字符串. |
| blob诊断最小量保留日 | 没有 | 10个 | 存储分析中小量度的数据保留 |
| blob诊断日志 | 没有 | "对" | 允许记录诊断日志以存储分析。 目前仅接受"真"/"假"作为字符串. |
| 保留日期 | 10个 | "对" | 储存分析中诊断记录的数据保留 |

\*\*\* 请注意,创建这一资源所需的唯一价值是: `storageAccountName`

### 匿名公众blob访问

可选 `allowBlobPublicAccess` 参数控制存储账户是否允许 **匿名** 公众读取blob数据.

> **BASELINE FLIP(裂变):** 截止本版本,安全默认基线已经改变:
> 
> -   **旧行为 (Pass-1):** 选择 `allowBlobPublicAccess` 保留了该账户现有的匿名存取状态.
> -   **新行为( Pass-2) :** 选择 `allowBlobPublicAccess` 现在写一个 **明确 `false`**,默认情况下使匿名公共blob访问失效.
> 
> **影响 :** 如果您的食谱重新调配了已有的存储账户, 并依赖于保持其当前匿名访问状态( 如果 `true`),现在必须明确设置 `allowBlobPublicAccess: true` 在食谱中保持这种状态.

-   **被允许或 `false`数字 :** 以匿名公共blob访问方式部署账户 **已禁用**。不使用例外标记。 这是新的安全默认基线 .
-   **`true`数字 :** 允许配置匿名公共blob访问(实际匿名读取仍然取决于每个容器的公开访问级别) **财务报告和审定财务报表** 所核准的例外标记 `hchb-policy-exempt-anon-blob = true` 将它列为匿名否认政策的例外 现有标签( 如 `Metrics`)被保留.

```yaml
recipe:
  mypkg-storage:
    properties:
      type: "@azbake/ingredient-storage"
      parameters:
        storageAccountName: "[storage.create_resource_name()]"
        allowBlobPublicAccess: false   # disable anonymous blob access (secure baseline)
        # OR omit allowBlobPublicAccess entirely—it defaults to false
```

> **ARM 模板兼容性 :**
> 
> -   `storage.json` 使用 apiVersion 软件 `2020-08-01-preview` - 完全支持 `allowBlobPublicAccess`
> -   `storageNetwork.json` 使用 apiVersion 软件 `2019-06-01` - 支持 `allowBlobPublicAccess` (GA'd于2019-04-01) (中文(简体) )
> -   `storageDatalake.json` 使用 apiVersion 软件 `2018-02-01` ——⚠️事前 `allowBlobPublicAccess` (2019-04-01);该地产可能默默被ARM忽略,尽管标记仍然是邮票. 数据湖账户`IsHnsEnabled`),验证目标Azure环境中的部署行为,然后依赖被执行的财产.

### 公共网络接入(Pass-1 stub-仅标记)

可选 `allowPublicNetworkAccess` 参数为 a **与前置兼容的根**。在这个通行证中,它只盖一个经批准的例外标记;它故意这样做 **没有** 写入存储账户 `publicNetworkAccess` 属性,所以网络行为尚未改变.

-   **输入( 默认) :** 没有书写,没有标签,没有财产。 完全向后兼容.
-   **`false`数字 :** 没有标记,也没有书写任何财产(Pass-1 stub—— `publicNetworkAccess` 属性被推迟).
-   **`true`数字 :** 所核准的例外标记 `hchb-policy-exempt-public-network = true` 将其标为公共网络接入拒绝政策中受制裁的例外。 现有标签( 如 `Metrics`)被保留,这个标记与 `hchb-policy-exempt-anon-blob` (CDN案).

> **推迟执行:** 布尔将随后映射到 `publicNetworkAccess` `Enabled`编号 :`Disabled` (有私人端口) 在地物698027中,在NetOps私人-DNS门后(Feature 701425)——无需再进行食谱编辑. 在 DNS 启用器存在之前设置属性会断开连接, 这就是为什么 Pass 1 仅标记 .

```yaml
recipe:
  mypkg-storage:
    properties:
      type: "@azbake/ingredient-storage"
      parameters:
        storageAccountName: "[storage.create_resource_name()]"
        allowPublicNetworkAccess: true   # stamp the exception tag only (no property yet)
```

## 上传文件到 Blob 存储

文件可以在部署期间通过指定 `source` 在食谱中的属性。 源属性支持通过 `file:///` 语法或用相对路径指向目录.

注:此时仅支持blob存储.

```yaml
name: My package
shortName: mypkg
version: 0.0.1
ingredients:
  - "@azbake/ingredient-storage@~0"
parallelRegions: false
resourceGroup: false
recipe:
  mypkg-storage:
    properties:
      type: "@azbake/ingredient-storage"
      source: "file:///./deploy/deploy.zip" # "./deploy"
      parameters:
        storageAccountName: "[storage.create_resource_name()]"
        container: myContainer
        uploadPath: mypkg/__build_buildNumber__
        deploy: false
        unzip: true
```

## 公用事业

工具课可以在烘焙内部使用. 参数和源值的 Yaml 文件 .

### `storage` 类

| 函数 | 说明 |
| --- | --- |
| 创建 资源 名称 () | 返回在部署时为交通管理器配置文件创建的名称 . |
| 添加 删除 政策( 名称、 启用日期、 日期、 选项) 吗 | 创建带有可选容器/路径/tag过滤器的删除策略规则. |
| 创建政策(...规则) | 从一个或多个规则创建管理政策计划. |
| 获取容器( 账户、 容器、 访问级别 ? 策略 ?) | 获得或创建容器,可选择适用管理政策. |
| 获取存储账户( 资源组, 名称) | 获得包含端点和密钥的存储账户细节. |
| 获取主键( 名称, rg ?) | 获取存储账户的主要访问密钥 . |
| 获取中键( 名称, rg ?) | 获取存储账户的二级访问密钥 . |
| 获取主连接线( 名称, rg ?) | 获取存储账户的主连接字符串. |
| 获取 second connectionstring(名称, rg?) | 获取存储账户的二级连接字符串. |

### 函数细节

#### 创建 资源 名称 ()

获得交通管理器配置文件的创建名称 .

```yaml
...
parameters:
    storageAccountName: "[storage.create_resource_name()]"
...
```

#### 回返

字符串

### 生命周期管理政策

存储成分支持Azure Blob存储生命周期管理政策,根据年龄自动删除blob. 您可以在全球、每个容器、甚至路径前缀应用政策.

#### 添加 删除 政策( 名称、 启用日期、 日期、 选项) 吗

为blob生命周期管理创建删除政策规则。 支持全球政策(所有blobs),容器级,路径级,或基于标签的过滤.

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| 名称 | 字符串 | 政策规则的名称(政策中的独特性,可达256个字母数字字符) |
| 启用 | 布尔 | 规则是否启用 |
| 之后几天 | 编号 | 上次修改后几天删除blob |
| 选项 | 对象 | 可选的 过滤基于容器/路径/标签的政策的选项 |
| 选项。前缀Match | 字符串 \[\] | 可选的 前缀字符串组合(例如, `["logs/", "data/temp/"]`) (中文(简体) ). 每个前缀必须从容器名称开始. 每个规则最多可有10个前缀. |
| 选项.blobIndexMatch | 对象\[\] | 可选的 blob 索引标记条件阵列 `{ name, op, value }` |
| 选项.blobTypes | 字符串 \[\] | 可选的 Blob类型。 默认为 `["blockBlob"]`有效性 : `"blockBlob"`, (中文(简体) ), `"appendBlob"` |

**示例:全局删除策略( 所有 blobs)**

```typescript
// Delete all blockBlobs in the storage account after 90 days
const globalRule = storage.add_delete_policy("delete-all", true, 90);
```

**示例:集装箱级TTL**

```typescript
// Delete blobs in 'logs' container after 30 days
const logsRule = storage.add_delete_policy("delete-logs", true, 30, { prefixMatch: ["logs/"] });

// Delete blobs in 'temp' container after 7 days  
const tempRule = storage.add_delete_policy("delete-temp", true, 7, { prefixMatch: ["temp/"] });

// Delete blobs in 'archive' container after 365 days
const archiveRule = storage.add_delete_policy("delete-archive", true, 365, { prefixMatch: ["archive/"] });

// Create combined policy
const policy = storage.create_policy(logsRule, tempRule, archiveRule);
```

**示例:容器内的路径级 TTL**

```typescript
// Delete blobs in 'data/temp/' after 7 days, 'data/cache/' after 14 days
const tempRule = storage.add_delete_policy("delete-data-temp", true, 7, { prefixMatch: ["data/temp/"] });
const cacheRule = storage.add_delete_policy("delete-data-cache", true, 14, { prefixMatch: ["data/cache/"] });

const policy = storage.create_policy(tempRule, cacheRule);
```

**示例: 由 blob 索引标签过滤**

```typescript
// Delete blobs tagged as "archived" in 'reports' container after 14 days
const rule = storage.add_delete_policy("delete-archived-reports", true, 14, {
  prefixMatch: ["reports/"],
  blobIndexMatch: [{ name: "status", op: "==", value: "archived" }]
});
```

**示例:包含附件块**

```typescript
// Delete both blockBlobs and appendBlobs in 'logs' container after 30 days
const rule = storage.add_delete_policy("delete-all-types", true, 30, { 
  prefixMatch: ["logs/"],
  blobTypes: ["blockBlob", "appendBlob"] 
});
```

#### 创建政策(...规则)

根据一个或多个政策规则创建管理政策计划.

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| 规则 | 管理政策规则 | 由添加 删除 政策创建的一个或多个政策规则 |

#### 获取容器( 账户、 容器、 访问级别 ? 策略 ?)

获得或创建容器,可选择适用管理政策。 当提供政策时,它通过添加前缀过滤器,自动将政策规则的范围扩大到指定的容器.

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| 账户 | 库存账户 | 从 get storagecount () 存储账户对象 |
| 集装箱 | 字符串 | 容器名称 |
| 访问级别 | 字符串 | 可选的 访问级别 : `"container"`, (中文(简体) ), `"blob"`,或 `undefined` |
| 政策 | 管理政策计划a | 可选的 适用政策(规则将适用于这一集装箱) |

## 常见问题

### @azbake/ingredient-storage 是什么？

用于部署存储账户的材料

### 如何安装 @azbake/ingredient-storage？

在项目目录运行 npm install @azbake/ingredient-storage，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@azbake/core（\*）、@azure/ms-rest-nodeauth（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @azbake/ingredient-storage 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @azbake/ingredient-storage 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @azbake/ingredient-storage 可以商用吗？

@azbake/ingredient-storage 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @azbake/ingredient-storage 的下载量有多少？

根据 npm 官方下载统计，@azbake/ingredient-storage 在 2026/10/08 – 2026/11/06 这 30 天内被下载 4,294 次，日均约 143 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @azbake/ingredient-storage 还在维护吗？

最新版本 0\.6\.0 发布于 2026/08/19（2 个月前）；至今共发布 75 个版本，其中过去 12 个月发布了 7 个；首次发布于 2019/03/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

