# @anvil-cloud/sdk 中文文档

规范地址：https://npmcn.com/package/%40anvil-cloud/sdk/

版本：0\.1\.26
npm 元数据更新时间：2026-11-07T04:51:08.356Z
中文译文更新时间：2026-11-07T01:56:15.748Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40anvil-cloud/sdk
原文对照：https://npmcn.com/package/%40anvil-cloud/sdk/?lang=original
项目主页：https://anvilcloud.dev/
源码仓库：https://github.com/anvil-cloud/anvil

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

- 包体积（解压后）：954 kB，241 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2026-03-21T10:16:27.725Z
- 最新版本发布：2026-11-07T04:51:08.044Z
- 近 30 天下载量：2095（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：33（近 12 个月 33 个）

## 中文简介

Anvil——安全不违约云基础设施组件

## 安装

```sh
npm install @anvil-cloud/sdk
```

也可以使用：`pnpm add @anvil-cloud/sdk`、`yarn add @anvil-cloud/sdk`、`bun add @anvil-cloud/sdk`

## README

# @anvil-cloud/sdk (英语)

**云基础设施是默认安全的——不是偶然的.**

Anvil将生云资源包装成有见解,有生产准备的部分. 没有200行Terraform模块. 没有复制安全配置 。 只要说出你需要什么 安维尔处理其余的.

建造在 [普鲁米](https://www.pulumi.com/)。 。 。 .

## 安装

```bash
npm install @anvil-cloud/sdk
```

## 默认安全

每艘Anvil组件船,自第一天起就与生产保持一致——公共访问被封锁,加密强制,成本标记被应用. 目标不是让遵守自动化,而是让它成为你实际上可以建设的平台.

## App类

每个 Anvil 程序开始 `new App()`编辑 `run` 回调收到一个 `Context` 改为:

-   `ctx.stage` —— 当前部署阶段( dev 隔离默认为您的 OS 用户名)
-   `ctx.project` - 项目名称来自 `anvil.yaml`
-   `ctx.export(name, value)` 出口堆栈产出
-   `ctx.providers` - 为多区域/多账户指定云供应商
-   `ctx.ref(id)` - 参考其他地方申报的资源(见下文)

## 转发参考资料( E)`ctx.ref`(中文(简体) )

通常你通过它分配给的变量来引用资源 表示必须先申报. `ctx.ref('id')` 让您引用资源 联合国 **逻辑名称** - 甚至一个宣布 **待会** 在程序中:

```typescript
import { App } from '@anvil-cloud/sdk';
import * as anvil from '@anvil-cloud/sdk';

export default new App({
  run(ctx) {
    const fn = new anvil.aws.Lambda('processor', {
      runtime: 'nodejs20.x',
      handler: 'src/index.handler',
      environment: {
        // forward reference — `db` is declared below
        DSQL_ENDPOINT: ctx.ref<anvil.aws.DSQL>('db').endpoint,
      },
    });

    const db = new anvil.aws.DSQL('db', { /* ... */ });
  },
});
```

`ctx.ref('db').endpoint` 决定: _不变_ 输出为 `db.endpoint` - 他们是 可互换. 通用语言(`<anvil.aws.DSQL>`)只是自动完成.

这个 **逃生舱门** (a) 宣布令尴尬的情况 代码直接引用资源。 有两件事要知道:

-   **使参考文献向一个方向流动.** 因为你可以指向任何一种方式,你 能够意外创建循环( A 引用 B 的输出) _财务报告和审定财务报表_ B参考 A's. 这种僵局是部署的僵局,而不是错误地——所以不要这样做.
-   一种打字或从未申报的ID失败,在任何部署之前都有明显的错误.

## 赠款

补助金是Anvil电线在资源之间允许的。 而不是用手写IAM政策,你叫 `.grant()` anvil自动处理IAM角色政策和环境变量注入.

一个Lambda读取从一桶:

```typescript
import { App } from '@anvil-cloud/sdk';
import * as anvil from '@anvil-cloud/sdk';

export default new App({
  run(ctx) {
    const bucket = new anvil.aws.Bucket('uploads', {
      dataClassification: 'sensitive',
    });

    const fn = new anvil.aws.Lambda('processor', {
      runtime: 'nodejs20.x',
      handler: 'src/index.handler',
    });

    // Grants the Lambda read access to the bucket and scopes down to specific bucket paths
    // Anvil creates the IAM policy and injects UPLOADS_BUCKET_NAME
    // into the Lambda's environment automatically.
    //
    bucket.grant(fn, { actions: ['read'], path: ['user/*'] });
  },
});
```

安维尔在引擎盖下做什么:

-   创建 IAM `RolePolicy` 范围为要求采取的确切行动
-   将资源标识符作为目标上的环境变量(例如. `UPLOADS_BUCKET_NAME`(中文(简体) )
-   没有手工 ARN 接线, 没有被遗忘的权限

## SvelteKit 部署

向有单一组件的AWS部署一个SvelteKit应用程序。 Anvil protects S3, CloudFront, ACM, Lambda (通过 Lambda Web 适配器), 和 Route 53 — 有 HTTPS 和自定义域从框外出:

```typescript
import { App } from '@anvil-cloud/sdk';
import * as anvil from '@anvil-cloud/sdk';

export default new App({
  run(ctx) {
    const site = new anvil.aws.SvelteKitSite('web', {
      path: 'web', // the SvelteKit project folder — Anvil runs the build
      domain: 'myapp.com',
    });

    ctx.export('url', site.url);
  },
});
```

## 逃逸舱门

每个组件接受a `hatch` 参数 —— 当您需要突破默认时, 用于覆盖基础资源配置的逃生舱:

```typescript
const bucket = new anvil.aws.Bucket('custom', {
  dataClassification: 'non-sensitive',
  hatch: {
    bucket: { forceDestroy: true, tags: { env: 'dev' } },
  },
});
```

## 链接

-   [文档](https://anvilcloud.dev/)
-   [GitHub 图像](https://github.com/anvil-cloud/anvil)
-   [Python SDK 键盘](https://pypi.org/project/anvil-cloud/)
-   [冲去SDK](https://pkg.go.dev/github.com/anvil-cloud/anvil/sdk/go/anvil)

## 许可证

阿帕奇 - 2.0

## 常见问题

### @anvil-cloud/sdk 是什么？

Anvil——安全不违约云基础设施组件

### 如何安装 @anvil-cloud/sdk？

在项目目录运行 npm install @anvil-cloud/sdk，或使用 pnpm add / yarn add / bun add。

### @anvil-cloud/sdk 支持 TypeScript 吗？

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

### @anvil-cloud/sdk 支持 ESM 还是 CommonJS？

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

### @anvil-cloud/sdk 可以商用吗？

@anvil-cloud/sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @anvil-cloud/sdk 的下载量有多少？

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

### @anvil-cloud/sdk 还在维护吗？

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

