SuperAPI AI 工具集

aws

部署与运维

查看项目

更新于 10-15 14:55

技能介绍

AWS 模拟器(Emulator)用于在本地开发和测试场景中模拟 AWS 云服务,支持 S3、SQS、IAM 和 STS。S3 采用与真实 AWS S3 线格式一致的根路径,同时兼容旧的 /s3/ 前缀路径;SQS、IAM、STS 使用以 Action 为表单参数(application/x-www-form-urlencoded)的 POST 查询式端点。S3 上传与下载会保留任意二进制载荷,包括原始字节长度和 ETag。所有状态保存在内存中,响应使用 AWS 兼容的 XML。

启动方式:本地监听默认绑定 127.0.0.1。若需从容器或其他机器访问,向 CLI 传入 --host 0.0.0.0,或向 createEmulator 传入 hostname: '0.0.0.0';并通过 --base-url 或 baseUrl 配置这些客户端可访问的对外 URL。

命令行启动(仅 AWS):npx emulate --service aws;单独运行时默认端口为 http://localhost:4000。

编程方式:import { createEmulator } from 'emulate';const aws = await createEmulator({ service: 'aws', port: 4006 });此时 aws.url === 'http://localhost:4006'。

鉴权:通过 Authorization: Bearer <token> 传递令牌。作用域权限使用 s3:、sqs:、iam:、sts: 模式。

在应用中接入模拟器:环境变量 AWS_EMULATOR_URL=http://localhost:4006。使用 AWS SDK v3 时,为 S3Client 设置 endpoint: process.env.AWS_EMULATOR_URL、region: 'us-east-1'、示例凭证(accessKeyId: 'AKIAIOSFODNN7EXAMPLE'、secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')以及 forcePathStyle: true;为 SQSClient 设置 endpoint: ${process.env.AWS_EMULATOR_URL}/sqs;为 IAMClient 设置 endpoint: ${process.env.AWS_EMULATOR_URL}/iam。

种子配置:可通过 aws 段配置 region、s3.buckets(name、region)、sqs.queues(name、visibility_timeout、fifo)、iam.users(user_name、create_access_key)与 iam.roles(role_name、description、assume_role_policy)。默认种子始终创建:S3 桶 emulate-default、SQS 队列 emulate-default-queue、IAM 用户 admin 及其访问密钥对(AKIAIOSFODNN7EXAMPLE / wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)。

API 端点概览:S3 支持列出全部桶、创建桶、删除桶(必须为空)、HEAD 桶(检查存在性与获取 region)、列出对象(支持 prefix、delimiter、分页)、上传对象(支持 Content-Type 与 x-amz-meta-* 元数据)、获取对象、HEAD 对象(仅元数据)、删除对象、复制对象(x-amz-copy-source)。SQS 支持 CreateQueue(可带 Attribute.1.Name/Value 属性)、ListQueues(可带 QueueNamePrefix)、GetQueueUrl、GetQueueAttributes、SendMessage(可带 MessageAttribute)、ReceiveMessage(MaxNumberOfMessages)、DeleteMessage(ReceiptHandle)、PurgeQueue、DeleteQueue。IAM 支持 CreateUser、GetUser、ListUsers、DeleteUser、CreateAccessKey、ListAccessKeys、DeleteAccessKey、CreateRole、GetRole、ListRoles、DeleteRole。STS 支持 GetCallerIdentity 与 AssumeRole(RoleArn、RoleSessionName)。

Inspector:可访问 http://localhost:4006/_inspector?tab=s3(或 tab=sqs、tab=iam)查看 HTML 仪表盘,展示 S3、SQS、IAM 状态。

自定义模拟器:可使用 npx emulate init --custom inventory 脚手架创建第三方 API 模拟器并测试,在 emulate.config.ts 中用 emulate 的 defineConfig 注册,与内置条目(如 { emulator: "aws" })并列。运行 npx emulate start --watch 可重载导入,并在打印的 /_emulate URL 查看自定义状态;成功重载会将运行重置为种子状态。既有的扁平种子配置仍然可用;--config 用于选择显式文件。第三方 API 模拟器的编写与测试见 https://emulate.dev/docs/custom-emulators。

适用场景:需要在本地与 AWS API 端点交互、测试 S3 上传下载、SQS 消息收发、IAM 用户/角色与访问密钥管理、STS 身份获取与角色代入等开发与测试流程。

限制:所有状态存于内存;本地监听默认绑定 127.0.0.1;成功重载会将运行重置为种子状态;删除桶要求桶为空。其余限制资料未提供。