serverless frame work + Type Script + DynamoDB의 로컬 환경

참고 자료
로컬 개발 Serverless 애플리케이션 - Qita
절차를 정리하다.DynamoDB도 사용합니다.

1. sls create


sls create -t aws-nodejs-typescript -p my-api

2. plugin


에 추가
npm i -D serverless-offline serverless-dynamodb-local
serverless.ts
  plugins: [
    'serverless-webpack',
    'serverless-dynamodb-local',
    'serverless-offline',
  ]

3. JDK 없을 때 JDK 설치


dynamodb-local을 위해서는 자바가 필요합니다.
다음 방법으로 Ubuntu를 설치합니다.
sudo apt install openjdk-14-jdk

4. sls dynamodb install


다음 설치를 수행합니다.
.dynamodb 아래에서 실행 파일을 다운로드합니다.
sls dynamodb install

5.dynamodb local로 설정

serverless.ts에서 다음을 설정합니다.
  custom: {
    // ...
    dynamodb: {
      stages: ['dev'],
      start: {
        port: 8000,
        inMemory: true,
        migrate: true,
        seed: false,
      },
    },
  },
  resources: {
    Resources: {
      JankensTable: {
        Type: 'AWS::DynamoDB::Table',
        Properties: {
          TableName: 'jankens',
          AttributeDefinitions: [
            {
              AttributeName: 'player',
              AttributeType: 'S',
            },
            {
              AttributeName: 'unixtime',
              AttributeType: 'N',
            },
          ],
          KeySchema: [
            {
              AttributeName: 'player',
              KeyType: 'HASH',
            },
            {
              AttributeName: 'unixtime',
              KeyType: 'RANGE',
            },
          ],
          ProvisionedThroughput: {
            ReadCapacityUnits: 1,
            WriteCapacityUnits: 1,
          },
        },
      },
    },
  },

6. sls dynamodb start


dynamodb local 등록 양식 시작

7. npm i -S aws-sdk


npm i -S aws-sdk

8. Lambda에서 DynamoDB 클라이언트 초기화


https://github.com/dherault/serverless-offline#the-processenvis_offline-variable
위에서 말한 바와 같이 process.env.IS_OFFLINE 지점이 서버less-offline 환경인지 여부입니다.
import { DynamoDB } from 'aws-sdk'

const dynamodb = process.env.IS_OFFLINE
  ? new DynamoDB({
      region: 'localhost',
      endpoint: 'http://localhost:8000',
    })
  : new DynamoDB()
등.

좋은 웹페이지 즐겨찾기