@emulators/aws

中文文档
0.13.1发布于 2026/11/09Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 6998

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

中文使用文档
文档目录10 节
  1. 安装
  2. 终点
  3. 第3条
  4. 质量
  5. 行政会议
  6. 认知
  7. 口译
  8. 认证
  9. 种子配置
  10. 链接

@ 模拟/锯齿

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

部分 模拟 ——为CI和无网络沙盒提供本地出入口替换服务.

安装

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合作:

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 创建时没有用户。 以上述例子为例,提出了经证实的叙述:

aws:
  cognito:
    user_pools:
      - id: us-east-1_emulate
        confirmation_code: "123456"
        users:
          - username: developer
            password: LocalPass123!
            attributes:
              email: [email protected]
              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。 。 。 .

种子配置

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

版本与发布记录

@emulators/aws 共发布 19 个版本,首次发布于 2026/03/27;过去 12 个月发布了 19 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.13.1latest2026/11/094 天前
0.13.02026/10/2915 天前
0.12.32026/10/2321 天前
0.12.22026/10/1430 天前
0.12.12026/10/021 个月前
0.12.02026/09/241 个月前

关于 @emulators/aws 的常见问题

@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 和提交记录判断。