Serverless Framework の準備、デプロイ

2 min read

概要:

Serverless Frameworkの環境構築等になります。

  • lambda + API gateway + dynamodb の構成で、
    Serverless Frameworkを導入した方が、効率良さそうでしたので。
    試してみました。

構成

  • Serverless Framework
  • node: 14
  • lambda
  • API Gateway
  • IAM

参考


準備

  • awsアカウント、aws-cli が必要で
  • node 14の例です
  • リージョンは、東京(ap-northeast-1) に設定しました

  • Serverless Frameworkのインストール
npm install serverless -g
  • IAM ユーザー追加

  • 権限追加
    AmazonDynamoDBFullAccess
    AdministratorAccess

  • 追加した。アクセスキー、シークレットキーを。メモしておきます


  • aws configure の設定
$ aws configure --profile user1

AWS Access Key ID [None]: メモしたアクセスキー
AWS Secret Access Key [None]: メモしたシークレットキー
Default region name [None]: ap-northeast-1
Default output format [None]: json

  • プロジェクト作成
serverless create --template aws-nodejs --path service1

  • npm add
npm init -y
npm install aws-sdk --save
npm install uuid --save

  • serverless.yml

  • dynamodb設定が含まれますが。今回は未使用です
    (テーブルは作成されます)

https://gist.github.com/kuc-arc-f/c15e124096a59d4b986465bebbe30802

service: service1

#frameworkVersion: '2'

provider:
  name: aws
  runtime: nodejs12.x
  region: ap-northeast-1
  stage: dev
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeTable
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:ap-northeast-1:*:*"

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: any
          cors: true     

resources:
  Resources:
    TodosDynamoDbTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Retain
      Properties:
        AttributeDefinitions:
          -
            AttributeName: id
            AttributeType: S
        KeySchema:
          -
            AttributeName: id
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        TableName: 'todos'
  • deploy
sls deploy -v --aws-profile user1
  • 成功すると、endpointが表示されます
endpoints:
  ANY - https://hoge1234-api.ap-northeast-1.amazonaws.com/dev/hello
  • curlでテストすると、レスポンスが返ってきました。
curl https://hoge1234-api.ap-northeast-1.amazonaws.com/dev/hello


  • api gateway画面で、テスト

  • API Gateway画面 > API> 追加されたAPI

  • アクションを選択(この場合 ANY) > 右側の「テストのリンク」

  • メソッド: GET選択

  • 下の[テスト]ボタン押す。右側にレスポンスが表示されました


削除

  • 追加された function等一括削除できました。
  • dynamodbは削除されない為。テーブル削除は手動で行いました
sls remove

....

Discussion

ログインするとコメントできます