# @adaptiveworx/iac-aws 中文文档

规范地址：https://npmcn.com/package/%40adaptiveworx/iac-aws/

版本：0\.6\.1
npm 元数据更新时间：2026-10-29T17:05:52.111Z
中文译文更新时间：2026-11-06T03:14:57.248Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40adaptiveworx/iac-aws
原文对照：https://npmcn.com/package/%40adaptiveworx/iac-aws/?lang=original
项目主页：https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-aws#readme
源码仓库：https://github.com/AdaptiveWorX/iac-core

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

- 包体积（解压后）：294 kB，53 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=26\.0\.0
- 运行依赖：0 个
- peer 依赖：typescript ^6\.0\.0 \|\| ^7\.0\.0，@pulumi/aws ^7\.0\.0，@pulumi/pulumi ^3\.0\.0，@adaptiveworx/iac-core ^0\.2\.0 \|\| ^0\.3\.0 \|\| ^0\.4\.0 \|\| ^0\.5\.0 \|\| ^0\.6\.0
- 首次发布：2026-04-29T14:30:15.379Z
- 最新版本发布：2026-10-29T17:05:51.680Z
- 近 30 天下载量：5848（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：16（近 12 个月 16 个）

## 中文简介

为AWS——VPC,IAM跨账户角色,GitHub Actions OIDC和IAM政策助手重新使用的Pulumi基础设施组件.

## 安装

```sh
npm install @adaptiveworx/iac-aws
```

也可以使用：`pnpm add @adaptiveworx/iac-aws`、`yarn add @adaptiveworx/iac-aws`、`bun add @adaptiveworx/iac-aws`

## README

# @ 适应worx/iac- aws

用于 AWS 的可再使用的 Pulumi 基础设施组件,用 TypeScript 写成.

部分 [适应WorX `iac-core`](https://github.com/AdaptiveWorX/iac-core) a 包括: 一组开源的 IaC 库,用于多云的 Pulumi 部署.

## 安装

```sh
pnpm add @adaptiveworx/iac-aws @pulumi/aws @pulumi/pulumi
```

`@pulumi/aws` 财务报告和审定财务报表 `@pulumi/pulumi` 是同伴的依赖关系——带来自己的 各个版本.

## 构成部分

| 构成部分 | 目的 |
| --- | --- |
| `SharedVpc` | 多级 VPC 有 NAT, 流程日志, RAM 共享, 可配置的每级 CIDR, 在每个子网上可选的 IPv6 二重装 |
| `CrossAccountIAMRoles` | 跨账户 Pulumi 角色+ 产品线架构的基础接入角色 |
| `GitHubActionsOIDC` | OIDC 供应商+GitHub Actions CI/CD的部署角色 |
| IAM 政策助手 | 可编译的政策文件构建者 |

## 使用量

```ts
import { SharedVpc, CrossAccountIAMRoles, GitHubActionsOIDC } from "@adaptiveworx/iac-aws";

const vpc = new SharedVpc("dev-use1", {
  environment: "dev",
  region: "us-east-1",
  accountId: "123456789012",
  orgPrefix: "worx",
  vpcCidr: "10.10.0.0/16",
  availabilityZones: ["us-east-1a", "us-east-1b", "us-east-1c"],
  natGatewayCount: 3,
  enableIpv6: true, // dual-stack: a /64 on every subnet
  subnetTiers: [
    // With enableIpv6 every tier declares a unique, permanent ipv6Slot (0–15). role names the
    // workloads a tier holds; shareWith names the accounts it is shared with.
    { name: "public", role: "load-balancers", routeToInternet: true, shareWith: [], ipv6Slot: 0 },
    { name: "private", role: "apps", routeToInternet: false, shareWith: ["worx-app-dev"], ipv6Slot: 1 },
    { name: "data", role: "databases", routeToInternet: false, shareWith: ["worx-app-dev"], ipv6Slot: 2 },
  ],
  flowLogs: { enabled: true, trafficType: "ALL", retentionDays: 90 },
  sharedAccounts: { "210987654321": "worx-app-dev" },
  tags: {},
});
```

### 共享 Vpc 和 IPv6

`enableIpv6: true` \* 将《维也纳公约》的两层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层层 每个子网 a/64 (`netnum = ipv6Slot * 16 + AZ-letter index`,所以添加一个 AZ 或一个级 重新编号一个已存在的子网),其中 IPv6 被分配到新的网络接口; IPv6 规则每条 级 NACL(编号IPv4对应方+1000,加上UDP返回和ICMPv6包太大); `::/0` 进入公共层级的互联网网关,进入私人层级的独家网关,有或有 没有NAT;服务支持IPv6的双层存储 VPC端点.

-   `allowIpv4PublicIngress` (默认) `false`,自0.5.0起):没有互联网启动的IPv4进入 公共级别。 准备吧 `true` 它增加了IPv4,443/80 入境 (第100/110条规则).
-   `allowIpv6PublicIngress` (默认) `false`:没有互联网启动的IPv6输入;等级保持 他们需要的入侵 和它的回程交通。 准备吧 `true` 只为生产优势 它增加了IPv6 4443/80, 并向公众开放。 这个 公开 `::/0` 路径总是存在的(它是 IPv6 egress),所以安全小组仍然是控制 进入IPv6.
-   IPv6 egress 无法到达 IPv4 唯一的目的地(例如. `github.com`, (中文(简体) ), `ghcr.io`),没有 DNS64/NAT64 (英语). `natGatewayCount: 0` 仅当其工作量使用 VPC 时才有效 端点或IPv6功能专用目的地.

细节 : [文件/安保-实施](https://github.com/AdaptiveWorX/iac-core/blob/main/docs/security-implementation.md)。 。 。 .

### 等级角色、共享和重命名

-   `role` 列出一个级别的工作量。 有标记 `Role` 在层层的子网和NACL. 所需(0.6.0美元).
-   `shareWith` 列出账户(按账户名称分列) `sharedAccounts`)一个层次的子网共享 通过内存。 与每个账户分级的主要份额; 狭义的组合 自己的份额; `[]` 无账户的股份。 要求 (0. 6.0); 必须在 `sharedAccounts` (未关闭). `shareViaRam` 改为: `shareViaRam: true` 每一个账户 `sharedAccounts`, (中文(简体) ), `false` 与 `[]`默认分级 (单位:千美元)`defaultSubnetTiers(sharedAccounts)`与每个账户共享私人和数据.
-   `formerNames` 重命名一个级别而不替换任何内容: 每个资源以级别命名 将它的旧逻辑名作为 Pulumi 化名携带,所以预览仅显示标签更新. 这个 标准产出`publicSubnetIds`, (中文(简体) ), `privateSubnetIds`, (中文(简体) ), `dataSubnetIds`)和NAT的安置 依旧名重新命名的等级. `tierSubnetIds` 以当前 名称.
-   每个子网都有标记 `AzId` 及其区号(区名图到每个账户的物理区). 过 `availabilityZoneIds` 或让组件查取它们(`aws.getAvailabilityZones`页:1 普鲁米嘲笑,回来 `names` 财务报告和审定财务报表 `zoneIds` 为了那个电话.
-   导出助手 : `tierAliases`, (中文(简体) ), `tierNamed`, (中文(简体) ), `validateTierSharing`, (中文(简体) ), `tierShareTargets`, (中文(简体) ), `legacyRamAssociationNames`。 。 。 .

请查看每个组件的源代码来获取其完整的选项接口.

## 升级至0.6.0

**每个消费者**: 下一个预览从运行中的索引重命名每个子网的RAM关联 (单位:千美元)`<env>-ram-<tier>-<n>`改为分级和AZ字母(`<env>-ram-<tier>-<a…p>`通过别名,和 添加 `AzId` 标签( 加) `Role` 以至子网, 没有东西被替换。 测试套件 在嘲笑下必须回答 `aws:index/getAvailabilityZones:getAvailabilityZones` 与 `names` 财务报告和审定财务报表 `zoneIds`,或通过 `availabilityZoneIds`。 。 。 .

**重命名等级的堆栈,移动到 `shareWith` 或停止共享同一应用程序中的分级**数字 : 通过 `legacyRamSharedTiers` 与以前主要份额的等级,按名称分列 适用(例如:. `["public", "private", "data"]`) (中文(简体) ). 没有它,它所维持的协会将被删除 并重新创建,它会短暂地解析他们的子网. 检查预览: 保留级 关联必须显示为重命名, 绝不显示为创建加删除 .

## 升级至0.5.0

**谁必须行动**:具有公共层级的消费者,其公共子网使用互联网 HTTPS/HTTP 在IPv4(例如公共负载平衡器)之上. 设定 `allowIpv4PublicIngress: true` 为了他们.

公共级别 NACL的TCP 443和80规则来自 `0.0.0.0/0` (第100和110条)现在被选入, 与 `allowIpv6PublicIngress`。没有旗帜,下一次预览会删除这两个规则 每个公共等级的条目,没有什么变化。 VPC CIDR规则(95)和回程交通 规则(120)留下,所以公共层面的目标仍然可以从VPC内部到达,并保持它们的进取.

## 升级到0.4.0

0:4.0是将"共享Vpc IPv6"更改标记为断裂的放出. 变化本身首先 运入 **0.3.4 (中文(简体) )**,它已经贬值:它作为补丁发行,尽管它打破了一些 消费者。 平到0.3.3或移动到0.4.0;不要使用0.3.4.

**谁必须行动**: 设定的消费者 `enableIpv6: true`。 。 。 .

-   **自定义 `subnetTiers`**: 每一级必须声明 `ipv6Slot` (整数 0 - 15, 跨 (第1款) 没有它,部件投向建筑, 所以没有部署。 选择 插槽一次而永不更改:分级槽会修正子网的64.
-   **默认等级**:它们搭载了0/1/2槽,所以构造成功,但下个预览会转动 在IPv6上到处都是。 每个子网都获得一个64和指定创建(在位更新,从不) ,每一级 NACL 获得IPv6规则, 私人级获得一个只进入的网关路径, 终点会变成双层点 将它视为一种有意的网络变化,每个环境.
-   `allowIpv6PublicIngress` 现在默认为 `false`,与公众 `::/0` 路径总是存在的 与 IPv6 (参见 [共享 Vpc 和 IPv6](https://npmcn.com/package/%40adaptiveworx/iac-aws/#readme-sharedvpc-and-ipv6)) (中文(简体) ).

没有消费者 `enableIpv6` 见无变化.

## 版本发布( L)

这个包裹是独立铸造的 1.0以下,一个突破的更改会撞出小版本 (0.3.x-0.4.0) 和地物和固定物会撞出补丁. 已标记断开的更改 (`!`因此,一个 `^0.y.z` 范围从来不承认一个。 见 [根变换组公约](https://github.com/AdaptiveWorX/iac-core/blob/main/CONTRIBUTING.md#releases) 这个包裹 [变动情况](https://npmcn.com/package/%40adaptiveworx/iac-aws/CHANGELOG.md)。 。 。 .

## 许可证

阿帕奇-2.0 — 见 [自由主义](https://npmcn.com/package/%40adaptiveworx/iac-aws/LICENSE) 财务报告和审定财务报表 [通知](https://npmcn.com/package/%40adaptiveworx/iac-aws/NOTICE)。 。 。 .

## 常见问题

### @adaptiveworx/iac-aws 是什么？

为AWS——VPC,IAM跨账户角色,GitHub Actions OIDC和IAM政策助手重新使用的Pulumi基础设施组件\.

### 如何安装 @adaptiveworx/iac-aws？

在项目目录运行 npm install @adaptiveworx/iac-aws，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@pulumi/aws（^7\.0\.0）、@pulumi/pulumi（^3\.0\.0）、@adaptiveworx/iac-core（^0\.2\.0 \|\| ^0\.3\.0 \|\| ^0\.4\.0 \|\| ^0\.5\.0 \|\| ^0\.6\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @adaptiveworx/iac-aws 支持 TypeScript 吗？

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

### @adaptiveworx/iac-aws 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @adaptiveworx/iac-aws 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=26\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @adaptiveworx/iac-aws 可以商用吗？

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

### @adaptiveworx/iac-aws 的下载量有多少？

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

### @adaptiveworx/iac-aws 还在维护吗？

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

