# @emulators/aws 中文文档

规范地址：https://npmcn.com/package/%40emulators/aws/

版本：0\.13\.1
npm 元数据更新时间：2026-11-08T22:07:14.055Z
中文译文更新时间：2026-11-13T16:32:19.652Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40emulators/aws
原文对照：https://npmcn.com/package/%40emulators/aws/?lang=original
项目主页：https://emulate.dev/
源码仓库：https://github.com/vercel-labs/emulate

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

- 包体积（解压后）：520 kB，24 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-03-26T20:35:00.635Z
- 最新版本发布：2026-11-08T22:07:13.195Z
- 近 30 天下载量：6998（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 19 个）

## 中文简介

S3, SQS, Cognitto, IAM, 和 STS 以 AWS SDK相容的 S3 路径模拟, JSON SQS/ Cognitto 端点, 和 XML 查询 IAM/ STS 端点. S3上传和下载保存了任意的二进制有效载荷,包括生字节长度和ETag. B. 答复使用联合

## 安装

```sh
npm install @emulators/aws
```

也可以使用：`pnpm add @emulators/aws`、`yarn add @emulators/aws`、`bun add @emulators/aws`

## README

# @ 模拟/锯齿

S3, SQS, Cognitto, IAM, 和 STS 以 AWS SDK相容的 S3 路径模拟, JSON SQS/ Cognitto 端点, 和 XML 查询 IAM/ STS 端点. S3上传和下载保存了任意的二进制有效载荷,包括生字节长度和ETag. 反应使用相应的AWS有线格式.

部分 [模拟](https://github.com/vercel-labs/emulate) ——为CI和无网络沙盒提供本地出入口替换服务.

## 安装

```bash
npm install @emulators/aws
```

## 终点

### 第3条

S3路由使用匹配真实的 AWS S3 线条格式的根路由,所以正式的 AWS SDK 工作在框外用 `forcePathStyle: true`. 遗产 `/s3/` 前缀路径也被支持后向兼容性.

-   `GET /` - 列出所有桶
-   `PUT /:bucket` - 创建桶
-   `DELETE /:bucket` — 删除桶
-   `HEAD /:bucket` ——检查存在
-   `GET /:bucket` ——列出对象(前缀、分隔符、最大键、接续键、起动键)
-   `POST /:bucket` – 预先签名的 POST上传(浏览器风格多部分形式并附有政策验证)
-   `PUT /:bucket/:key` —— 设置对象(支持副本通过 `x-amz-copy-source`(中文(简体) )
-   `GET /:bucket/:key` ——获取对象
-   `HEAD /:bucket/:key` — 头对象
-   `DELETE /:bucket/:key` 删除对象

### 质量

所有业务通过 `POST /sqs/` 与 `Action` 参数 :

-   `CreateQueue`, (中文(简体) ), `ListQueues`, (中文(简体) ), `GetQueueUrl`, (中文(简体) ), `GetQueueAttributes`
-   `SendMessage`, (中文(简体) ), `ReceiveMessage`, (中文(简体) ), `DeleteMessage`
-   `PurgeQueue`, (中文(简体) ), `DeleteQueue`

### 行政会议

所有业务通过 `POST /iam/` 与 `Action` 参数 :

-   `CreateUser`, (中文(简体) ), `GetUser`, (中文(简体) ), `ListUsers`, (中文(简体) ), `DeleteUser`
-   `CreateAccessKey`, (中文(简体) ), `ListAccessKeys`, (中文(简体) ), `DeleteAccessKey`
-   `CreateRole`, (中文(简体) ), `GetRole`, (中文(简体) ), `ListRoles`, (中文(简体) ), `DeleteRole`

### 认知

使用 `CognitoIdentityProviderClient` 有终点 `/cognito-idp` 财务报告和审定财务报表 `CognitoIdentityClient` 与 `/cognito-identity`。既接受AWS JSON 1.1,又与官方AWS SDK v3合作:

```typescript
import { CognitoIdentityProviderClient, InitiateAuthCommand } from "@aws-sdk/client-cognito-identity-provider";

const cognito = new CognitoIdentityProviderClient({
  endpoint: "http://localhost:4007/cognito-idp",
  region: "us-east-1",
  credentials: { accessKeyId: "local-access-key", secretAccessKey: "local-secret" },
});
const result = await cognito.send(new InitiateAuthCommand({
  ClientId: "emulateclient",
  AuthFlow: "USER_PASSWORD_AUTH",
  AuthParameters: { USERNAME: "developer", PASSWORD: "LocalPass123!" },
}));
```

默认用户池 `us-east-1_emulate`,公共应用程序客户端 `emulateclient`和身份组合 `us-east-1:00000000-0000-4000-8000-000000000001` 创建时没有用户。 以上述例子为例,提出了经证实的叙述:

```yaml
aws:
  cognito:
    user_pools:
      - id: us-east-1_emulate
        confirmation_code: "123456"
        users:
          - username: developer
            password: LocalPass123!
            attributes:
              email: dev@example.com
              email_verified: "true"
              name: Developer
```

用户池也接受 `name` 财务报告和审定财务报表 `clients` 与 `client_id`选项 `client_secret`准确 `redirect_uris`,并允许 `scopes`用户接受 `status` (单位:千美元)`CONFIRMED`, (中文(简体) ), `UNCONFIRMED`,或 `FORCE_CHANGE_PASSWORD`和 `enabled`。密码需要至少8个字符,并作为盐分散列储存。 秘密客户需要Cognito的HMAC `SecretHash` 或者说 `SECRET_HASH` sDK流量.

-   `SignUp`, (中文(简体) ), `ConfirmSignUp`, (中文(简体) ), `ResendConfirmationCode`, (中文(简体) ), `ForgotPassword`,以及 `ConfirmForgotPassword` 模式账户确认和回收。 密码在10分钟后过期 并使用游泳池 `confirmation_code` 默认固定 `123456`。没有发送电子邮件或短消息。 检查活动代码 : `/_inspector?tab=cognito`;种子未经证实的用户可以请求使用 `ResendConfirmationCode`。 。 。 .
-   `InitiateAuth` 支持 `USER_PASSWORD_AUTH`, (中文(简体) ), `REFRESH_TOKEN_AUTH`,以及 `REFRESH_TOKEN`。 。 。 . `AdminInitiateAuth` 也支持 `ADMIN_USER_PASSWORD_AUTH`。管理员创建的临时密码返回 `NEW_PASSWORD_REQUIRED`,以 `RespondToAuthChallenge` 或者说 `AdminRespondToAuthChallenge`。挑战会话在三分钟后到期,并绑定给用户和客户端.
-   `GetUser`, (中文(简体) ), `ChangePassword`, (中文(简体) ), `GlobalSignOut`,以及 `RevokeToken` 使用已发行的符号. `AdminCreateUser` (与 `TemporaryPassword`, (中文(简体) ), `AdminGetUser`, (中文(简体) ), `AdminConfirmSignUp`, (中文(简体) ), `AdminSetUserPassword`, (中文(简体) ), `AdminEnableUser`, (中文(简体) ), `AdminDisableUser`, (中文(简体) ), `AdminDeleteUser`标注 `ListUsers` 支助测试设置和管理.

托肯斯是RS256 JWT与克尼奥多 `token_use` 索赔。 识别应用程序客户端的标识符 `aud`; 使用访问符 `client_id`. ID和访问标志在1小时后失效;在30天后刷新标志。 签名、 撤销、 禁用、 删除和密码重置无效会话 。 用户、会话、身份和签名键参与快照、恢复和重置.

当地发行商是 `http://localhost:4007/cognito-idp/USER_POOL_ID`发现和公用钥匙 `ISSUER/.well-known/openid-configuration` 财务报告和审定财务报表 `ISSUER/.well-known/jwks.json`。用本地发行商和JWKS配置符号验证器. `ISSUER/oauth2/authorize` 呈现本地用户选择器, `ISSUER/oauth2/token` 交换授权代码或刷新令牌,以及 `ISSUER/oauth2/userInfo` 返回范围描述文件请求。 授权代码在5分钟后过期,是单用,并绑定客户端,精确重定向URI,以及可选的S256 PKCE挑战. 接受客户认证 `client_secret_basic` 或者说 `client_secret_post`。默认客户端许可 `http://localhost:3000/callback`。 。 。 .

身份池支持 `GetId` 财务报告和审定财务报表 `GetCredentialsForIdentity`中提供标识符 `Logins` 下级 `cognito-idp.REGION.amazonaws.com/USER_POOL_ID`。默认身份池接受默认用户池和应用程序客户端。 自定义 `aws.cognito.identity_pools` 录入 `id`选项 `name`, (中文(简体) ), `providers: [{ user_pool_id, client_id }]`,以及 `allow_unauthenticated_identities` (默认) `false`) (中文(简体) ). 同一鉴定对象的身份保持稳定。 身份证明在一个小时后失效;对登录签名,到期,观众,身份所有权进行检查.

SRP、外交部、外部身份提供者、Lambda触发器、池/客户管理API、, `ListUsers` 过滤器,和身份池角色选择不模拟. 行政请求遵循AWS模拟器的可允许的认证行为:SigV4签名和IAM政策不进行评估. 身份库证书是生成的测试证书,没有作用或政策评价.

### 口译

所有业务通过 `POST /sts/` 与 `Action` 参数 :

-   `GetCallerIdentity`, (中文(简体) ), `AssumeRole`

## 认证

持卡人标志或IAM访问密钥证书. 默认密钥对总是种子 : `AKIAIOSFODNN7EXAMPLE` 编号 : `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`。 。 。 .

## 种子配置

```yaml
aws:
  region: us-east-1
  s3:
    buckets:
      - name: my-app-bucket
      - name: my-app-uploads
  sqs:
    queues:
      - name: my-app-events
      - name: my-app-dlq
  iam:
    users:
      - user_name: developer
        create_access_key: true
    roles:
      - role_name: lambda-execution-role
        description: Role for Lambda function execution
```

## 链接

-   [完整文档](https://emulate.dev/aws)
-   [GitHub 图像](https://github.com/vercel-labs/emulate)

## 常见问题

### @emulators/aws 是什么？

S3, SQS, Cognitto, IAM, 和 STS 以 AWS SDK相容的 S3 路径模拟, JSON SQS/ Cognitto 端点, 和 XML 查询 IAM/ STS 端点\. S3上传和下载保存了任意的二进制有效载荷,包括生字节长度和ETag\. B\. 答复使用联合

### 如何安装 @emulators/aws？

在项目目录运行 npm install @emulators/aws，或使用 pnpm add / yarn add / bun add。

### @emulators/aws 支持 TypeScript 吗？

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

### @emulators/aws 支持 ESM 还是 CommonJS？

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

### @emulators/aws 可以商用吗？

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

### @emulators/aws 的下载量有多少？

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

### @emulators/aws 还在维护吗？

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

