@crvouga/ mockingbird-service-ecs (英语)
本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .
WIP AWS ECS Fargate 运行任务控制-平面模拟器. 它记录任务接受情况; 它从未开始 集装箱。 接线合同如下 运行任务。 。 。 .
安装
bun add @crvouga/mockingbird-service-ecs
使用量
import { ECSClient, RunTaskCommand } from "@aws-sdk/client-ecs"
import { createServer } from "@crvouga/mockingbird-service-ecs/server"
// Test setup: the ECS client your application already uses, pointed at the emulator.
const server = await createServer()
const ecs = new ECSClient({
endpoint: server.url,
region: "us-east-1",
credentials: { accessKeyId: "fixture", secretAccessKey: "fixture" },
})
// Application code, unchanged. Cluster default and task definition fixture:1 are the fixtures.
const { tasks, failures } = await ecs.send(
new RunTaskCommand({
cluster: "default",
taskDefinition: "fixture:1",
launchType: "FARGATE",
networkConfiguration: { awsvpcConfiguration: { subnets: ["subnet-fixture"] } },
}),
)
// tasks[0].lastStatus === "PROVISIONING"; failures is []
await server.close()
CLI: 爱丽丝 mockingbird-ecs serve --port 12129。指向应用程序厂的终点 url 或
服务器上的 AWS ENDPOINT URL ECS. POST / 有 X- Amz- 目标
AmazonEC2集装箱服务V20141113. Runtask接受AWS JSON 1.1.
默认的定着是集群默认和任务定义固定:1与容器应用.
发送启动 Type FARGATE, 任务定义, 计数(1–10) 网络配置. awsvpc 配置
和可选的覆盖。 对策将任务与失败分开.
组名/ARN和任务定义 ARN/家庭:修订/最晚活跃的家庭解决原始资源.
缺少集群返回 ClusterNotFound Excuse; 缺少定义返回客户端Excuse.
覆盖只保留任务状态,而不是请求日记. 只使用合成固定值 .
控制和状态
选项集群和任务定义取代了默认的固定装置. 他们的记录是输出的 集群和任务定义类型。 共享的/ admin/州道也为这些藏品提供种子. 从任务中读取已接受的任务并请求元数据( 网络配置, 任务 ARN, 失败) 从请求。 种子投放失败 : 每个运行任务按插入顺序计数失败并接受剩余任务计数. 失败持续到被删除/重置;这是测试控制,而不是容量模拟器. 任务仍然以想要的状态运行提供; 创建At使用模拟时钟 . 同一客户端在集群内进行24小时的重试返回相同结果; 已更改的参数返回关联资源集中的冲突排除。 托肯斯是可重置状态.
共享/ admin提供健康,UI,状态,重置,时间线检查站,时钟,日记和计量. 命名空间载体: x- mocking bird-namespace, / admin/ns/name 和 SigV4 访问键映射通过 PUT / admin/证书. 没有进行签字核查和IAM政策评价. 日记条目略去机构和全权证书. 没有释放出网络用户 . 预设:访问-拒绝(AWS 400)、节奏(400)、速率-有限(明显HTTP 429测试故障), 内部 error (500), 连接 滴入. 共同的断层也支持确定性延迟.
核查
bun test 运行接受和 OpenAPI 驱动的自平并带有差异检测.
bun scripts/sdk.ts 使用uv安装和运行精确的boto3 1.43.56对已安装的模拟器:
成功运行任务, 保存了覆盖, 偶数性, 缺少资源和 SDK 例外 .
这证明了SDK兼容性,而不是活的AWS等同. bun run parity 退出 2 是因为此
包中只包含一个可计费计算创建操作的模型;没有隐含地发出活请求.
现场验证需要经授权的孤立的ECS账户/集群和明确的执行核准.
故意不模拟
真正的容器执行、任务周期进展、最终一致性、网络提供、, IAM/签名评价、基础设施部署、EC2/EXTERNAL/能力提供者发射模式、, 任务定义或集群突变和其他ECS操作。 巢绕外名, 命令和环境通过,而不是全面验证。 没有子网可到达性, 图像有效性或资源容量模拟。 远门是唯一的型号发射型. Task ids和平台Version LATEST是本地站点,而不是精确的AWS生成的ids/已解决版本. 同位素寿命为24小时,而模拟器任务仍未完成;停止后期限缩短 并且任务停止反应重写在此表面之外.
API 密码
主要运行时间出口:ESAPI,ES NAMESPACE,DEFAULT CLUSTER,DEFAULT TASK DEFINITION, 创建运行时, ECS PRESETS, 文档, 操作IDs, 支持操作IDs . 类型:集群,任务定义,失败,任务,ECSAPI选项,ECSRuntime选项,ECSRuntime. 服务器条目:创建Server,DEFAULT PORT,服务目标;类型为ECSServer可选. CLI 条目执行服务, 不输出运行时间值 .