📚 Blog Główny
general

Wdrażanie na AWS Lambda

Jak wdrożyć aplikację Node.js na AWS Lambda krok po kroku

2024-01-25

💭 Join the Discussion

0 comments

✨ Your comment will be reviewed before publishing

🤔

Be the first to comment!

Share your thoughts and start the conversation

Wdrażanie na AWS Lambda

AWS Lambda pozwala uruchamiać kod bez zarządzania serwerami. Oto jak wdrożyć nasz blog.

Przygotowanie kodu

1. Struktura projektu

``

lambda-blog/

├── server.js # Główny plik aplikacji

├── package.json # Zależności

├── posts/ # Posty Markdown

│ ├── post1.md

│ └── post2.md

└── README.md

`

2. Handler Lambda

`javascript

const serverless = require('serverless-http');

const app = require('./server');

exports.handler = serverless(app);

`

Wdrożenie

Opcja 1: AWS CLI

`bash

Spakuj aplikację

zip -r lambda-blog.zip .

Utwórz funkcję Lambda

aws lambda create-function \

--function-name lambda-blog \

--runtime nodejs18.x \

--role arn:aws:iam::ACCOUNT:role/lambda-role \

--handler index.handler \

--zip-file fileb://lambda-blog.zip

`

Opcja 2: AWS Console

1. Otwórz AWS Lambda Console

2. Kliknij "Create function"

3. Wybierz "Author from scratch"

4. Nazwa: lambda-blog

5. Runtime: Node.js 18.x

6. Upload kodu jako ZIP

Opcja 3: Serverless Framework

`yaml

serverless.yml

service: lambda-blog

provider:

name: aws

runtime: nodejs18.x

region: us-east-1

functions:

app:

handler: index.handler

events:

- http:

path: /{proxy+}

method: ANY

- http:

path: /

method: ANY

`

Wdrożenie:

`bash

npm install -g serverless

serverless deploy

`

API Gateway

Lambda automatycznie integruje się z API Gateway:

  • Endpoint: https://api-id.execute-api.region.amazonaws.com/stage/
  • Routing: Wszystkie ścieżki przekierowane do Lambda
  • CORS: Skonfigurowany automatycznie
  • Optymalizacja

    Cold Start

    `javascript

    // Inicjalizacja poza handlerem

    const posts = loadPosts();

    exports.handler = async (event, context) => {

    // Szybka odpowiedź

    return response;

    };

    `

    Rozmiar pakietu

  • Usuń devDependencies
  • Minimalizuj node_modules
  • Użyj .lambdaignore
  • Pamięć i timeout

    `javascript

    // AWS Console lub serverless.yml

    {

    "memorySize": 256,

    "timeout": 30

    }

    `

    Monitoring

    CloudWatch Logs

    `javascript

    console.log('Info log');

    console.error('Error log');

    ``

    Metryki

  • Invocations
  • Duration
  • Errors
  • Throttles
  • Koszty

    Lambda pricing:

  • Requests: $0.20 per 1M requests
  • Duration: $0.0000166667 per GB-second
  • Free tier: 1M requests + 400,000 GB-seconds
  • Podsumowanie

    AWS Lambda to doskonały wybór dla małych i średnich blogów. Oferuje skalowalność, niskie koszty i zero administracji serwerów.