Nous résumerons la configuration pour exécuter le serveur API à l’aide de Hono dans le runtime Bun sur AWS Lambda.
Le but est de l’exécuter avec le runtime Bun, pas avec Node.js ou LLRT.
##Code source
Comment y parvenir
- Compiler en tant qu’exécutable à fichier unique (exécutable binaire)
- Exécutez à l’aide d’AWS Lambda Web Adaptor (LWA)
Je pense qu’il peut être exécuté sans utiliser LWA, mais cette fois, j’ai donné la priorité à la vérification du fonctionnement à l’aide de LWA.
Technologie utilisée
- Chignon -Honô -AWS SAM
- Adaptateur Web AWS Lambda
Structure du répertoire
.├── Makefile├── README.md├── app│ └── index.ts├── bun.lockb├── lambda.ts├── localhost.ts├── package.json├── samconfig.toml├── template.yaml└── tsconfig.jsonModèle SAM (configuration de l’infrastructure)
Définissez AWS Lambda, l’URL de la fonction Lambda et le rôle 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.FunctionUrlParamètres de construction
Lors du développement local, commencez par bun --hot localhost.ts.
À sam build, la tâche Build du Makefile est exécutée. C’est la clé ici.
bun build --compile --minify --sourcemap --target=bun-linux-x64 ./lambda.ts --outfile bootstrap
cp ./bootstrap $(ARTIFACTS_DIR)/.Générez un binaire exécutable à l’aide de l’option --compile de Bun et affichez-le sous la forme bootstrap.
Point d’entrée
Je n’ai rien fait de particulièrement difficile. Recevez simplement le numéro de PORT de la variable d’environnement.
L’implémentation de l’API (implémentation Hono) est consolidée dans le répertoire de l’application.
import { app } from "./app";
export default { port: process.env.PORT, fetch: app.fetch,};Déployer
Définissez 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"Commande de déploiement :
sam deployEn cas de succès, une URL comme celle ci-dessous sera émise.
https://<random-string>.lambda-url.<region>.on.awsLorsqu’il est utilisé avec CloudFront
Fondamentalement, une utilisation combinée est recommandée.
- Modifiez l’AuthType de l’URL de la fonction Lambda en
IAM_AUTH - Créer un OAC pour l’URL de la fonction Lambda dans CloudFront
- Mettre à jour les déclarations de stratégie basées sur les ressources Lambda
résumé
En le compilant en tant qu’exécutable à fichier unique de Bun et en utilisant Lambda Web Adapter, vous pouvez exécuter le serveur API Hono sur Lambda avec le runtime Bun.
La différence entre le développement local et le déploiement est faible et la configuration permet d’utiliser la vitesse élevée de Bun dans l’environnement Lambda.
hsb.horse