@aws- blocks/ bb- 计算
这个 Compute Building Block是选择工作量运行地点的单一地表.
说明计算 type 及其选项; 将类型映射到 AWS
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}服务可以支持它 服务名称从未出现在您的代码中 .
import { Compute } from '@aws-blocks/blocks';
// Serverless (Lambda today): pay-as-you-go, per-request.
const api = new Compute(scope, 'api', { type: 'serverless', memory: 512 });
// Container (Fargate today): a long-running process.
const worker = new Compute(scope, 'worker', {
type: 'container',
size: { vcpu: 1, memory: 2048 },
scaling: { minInstances: 1, maxInstances: 10 },
});
手拿起来 Compute 支助这项工作的工作量:
new AsyncJob(scope, 'reports', { compute: worker, timeoutSeconds: 1800, handler });
export const reports = new ApiNamespace(scope, 'reports', (context) => ({ /* methods */ }), { compute: api });
new CronJob(scope, 'nightly', { compute: api, schedule: 'cron(0 2 * * ? *)', handler: async () => { /* … */ } });
| 工作量 | 选项 | 计算类型 |
|---|---|---|
AsyncJob | compute | serverless, (中文(简体) ), container |
ApiNamespace | compute (第4个论点) | serverless |
CronJob | compute | serverless |
Scope (一切在它下面) | compute | serverless, (中文(简体) ), container (见下文) |
设置整个范围
设定 compute 编号 Scope 将创造的一切置于其中,包括
儿童瞄准镜,不经过 compute 至每个区块 :
const reportsCompute = new Compute(scope, 'reports-compute', { type: 'serverless', memory: 4096 });
const reports = new Scope('reports', { parent: scope, compute: reportsCompute });
export const reportsApi = new ApiNamespace(reports, 'reports', (context) => ({ /* methods */ }));
new AsyncJob(reports, 'rebuild', { handler: async () => { /* … */ } });
new CronJob(reports, 'nightly', { schedule: 'cron(0 2 * * ? *)', handler: async () => { /* … */ } });
- 给我
Compute编辑Scope不同编号 当他们共同拥有父母时: 两者都是孩子的构造. - 最亲近取胜. 一个街区自己的
compute选项,然后是最近的范围 套装compute,然后该应用程序的默认计算. - 容器范围 设置其
AsyncJob在容器上。 一个ApiNamespace或者说CronJob在它下面失败, 并有错误命名 计算,因为他们只运行在serverless现在计算: 给他们 他们自己的无服务器compute,或在其范围之外创建。 设置一个AsyncJob是因为maxConcurrencyPerCPU仍然需要容器通过 作为 工作属于自己compute,因此该选项被输入. Realtime财务报告和审定财务报表RawRoute在默认计算中停留在这样一个范围内 我也一样.Realtime是因为publish()从任何计算.
计算类型
| 类型 | 型号 | 后卫 |
|---|---|---|
serverless | 照付,按要求,短命 | 兰布达 |
container | 长期/长期过程 | 远端 |
类型名称为临时名称;
vm财务报告和审定财务报表kubernetes计划。 见docs/design/compute-selection-api.md。 。 。 .
选项
选项被限定为类型——这个属性不适用于所选类型 类型是一个编译错误.
serverless
memory?——函数内存 (MB); CPU 缩放与之.maxTimeoutSeconds?——该职能固有的运行时间上限(≤900). 一个工作 拥有timeoutSeconds必须适应它.
container
size?有效{ vcpu, memory }组合。 每个VCPU只允许 固定的内存值集( 无效的一对不会键入) .scaling?—— 说{ minInstances, maxInstances, strategy? }。实线 应用程序自动缩放 .strategy一个或多个cpu编号 :memory编号 :queue-depth信号; 省略它, 并 Blocks 推断一个( 工作单位 CPU 的排队深度) (否则).image?——要运行的容器图像(公用或ECR URI),使用 逐字记录 (任务开始时由ECS驱动). 块构建 没有 图像和部署需求 没有本地嵌入器: 您的应用程序代码作为 S3 资产单独发运 并在靴子取来。 因此,定制图像只提供运行时的环境—— 它必须提供 节点 24 运行时间PATH,加上任何系统库 处理器需要(例如媒体工具)。 默认为public.ecr.aws/docker/library/node:24-slim(arm64-兼容). 见 设计 用于启动机制.
API 命名空间
每个 ApiNamespace 在应用程序的默认计算上运行,除非您通过一个:
const reportsCompute = new Compute(scope, 'reports', { type: 'serverless', memory: 4096 });
export const reports = new ApiNamespace(scope, 'reports', (context) => ({
async build(month: string) {
// …
},
}), { compute: reportsCompute });
- 客户端不变.
reports.build('2026-10')还打来POST /aws-blocks/api/reports——来自 TypeScript 客户端和 斯威夫特,克特林和达特的客户端都一样——和堆栈共享的API网关 通往命名空间计算路径。 每一次都一样apiFrontDoor级别和后面Hosting,因此API保留了一个域. 一个电话 赤裸裸的/aws-blocks/api端点 — 一个原始的 HTTP 呼叫, 或者一个来自本地的 客户端在每个命名空间路径之前发布 —— 仍在默认运行 计算. - 网关的限制仍然适用. API 呼叫在 ~ 29 秒时封顶
无论计算结果如何
maxTimeoutSeconds; 在一个AsyncJob。 。 。 . - 这是安置,不是孤立. 每个计算都运行相同的后端捆绑 所以单独计算不是担保 边界.
- 跟踪导出名称 - 您的前端导入名称
(单位:千美元)
export const reports = …→reports),而不是第二个ApiNamespace参数. - 共享计算 横跨命名空间和
AsyncJob通过同样的Compute以每种方式运行,然后以相同函数运行. - 仅
serverless计算服务 API 命名空间 今天; 传出container计算是一个类型错误. - 其它的都按默认计算: 无命名空间
compute他们自己或从他们的范围,RawRoutes, 和认证 HTTP 路线(/aws-blocks/auth/*) (中文(简体) ).
地方发展
计算任务在本地 dev 中是透明的 – 处理器运行于进程 不论指定的计算结果如何。 仅需要部署的属性 基础设施(规模、规模)在模型中没有效果.
何时使用
指定 a Compute 当工作量需要运行时间而非应用程序默认时
(无服务器)——最常见的是长期或高记忆背景工作,即:
容器可以服务,但一个没有服务器的函数不能,或者 API 命名空间
需要更多的内存(和CPU)或自身的缩放与API的其他部分分开.
奥米 compute 而工作量使用应用程序默认值.