Resumiremos a configuração para executar o servidor API usando o tempo de execução Hono in the Bun no AWS Lambda.
O objetivo é executá-lo com o tempo de execução Bun, não com Node.js ou LLRT.
Código fonte
Como conseguir isso
- Compilar como executável de arquivo único (binário executável)
- Execute usando AWS Lambda Web Adaptor (LWA)
Acho que pode ser executado sem usar LWA, mas desta vez priorizei a verificação do funcionamento usando LWA.
Tecnologia usada
- Pão -Hono -AWS SAM
- Adaptador Web AWS Lambda
Estrutura de diretório
.├── Makefile├── README.md├── app│ └── index.ts├── bun.lockb├── lambda.ts├── localhost.ts├── package.json├── samconfig.toml├── template.yaml└── tsconfig.jsonModelo SAM (configuração de infraestrutura)
Defina AWS Lambda, URL da função Lambda e função IAM.
AWSTemplateFormatVersion: "2010-09-09"Transform: AWS::Serverless-2016-10-31Description: > bun compiled sfe binary on Lambda demo
Globals: Function: Timeout: 10
Resources: BunAppFunction: DeletionPolicy: Delete Type: AWS::Serverless::Function Properties: CodeUri: . MemorySize: 256 Handler: bootstrap Runtime: provided.al2023 Architectures: - x86_64 Environment: Variables: PORT: "8000" Layers: - !Sub arn:aws:lambda:${AWS::Region}:753240598075:layer:LambdaAdapterLayerX86:22 FunctionUrlConfig: AuthType: NONE Metadata: BuildMethod: makefile
Outputs: FunctionUrl: Value: !GetAtt BunAppFunctionUrl.FunctionUrlConfigurações de compilação
Ao desenvolver localmente, comece com bun --hot localhost.ts.
Em sam build, a tarefa Build do Makefile é executada. Esta é a chave aqui.
bun build --compile --minify --sourcemap --target=bun-linux-x64 ./lambda.ts --outfile bootstrap
cp ./bootstrap $(ARTIFACTS_DIR)/.Gere um binário executável usando a opção --compile do Bun e produza-o como bootstrap.
Ponto de entrada
Não fiz nada particularmente difícil. Basta receber o número da PORTA da variável de ambiente.
A implementação da API (implementação Hono) é consolidada no diretório app.
import { app } from "./app";
export default { port: process.env.PORT, fetch: app.fetch,};Implantar
Defina samconfig.toml.
version = 0.1
[default.deploy.parameters]stack_name = "<your_stack_name>"resolve_s3 = trues3_prefix = "<your_stack_name>"region = "<region>"confirm_changeset = truecapabilities = "CAPABILITY_IAM"Comando de implantação:
sam deploySe for bem-sucedido, um URL como o abaixo será emitido.
https://<random-string>.lambda-url.<region>.on.awsQuando usado com CloudFront
Basicamente, o uso combinado é recomendado.
- Altere o AuthType do URL da função Lambda para
IAM_AUTH - Criar URL de função OAC para Lambda no CloudFront
- Atualizar declarações de políticas baseadas em recursos do Lambda
resumo
Ao compilá-lo como executável de arquivo único do Bun e usar o Lambda Web Adaptor, você pode executar o servidor Hono API no Lambda com o tempo de execução do Bun.
A diferença entre desenvolvimento local e implantação é pequena, e a configuração permite que a alta velocidade do Bun seja utilizada no ambiente Lambda.
hsb.horse