Serverless Framework入門

ベトナム語バージョン:https://vtitech.vn/tim-hieu-ve-serverless-framework/

こんにちは、VTIジャパンのクアンです!この投稿に、Serverlessフレームワークという1つのserverlessアプリを開発ためのフレームワークを勉強しましょう!

Serverlessフレームワークとは?

ServerlessはNode.jsから開発の無料なオープンソースフレームワークです。Serverlessは、AWS Lambdaでアプリを開発するためのフレームワークです。

私にとって、Serverlessは軽くて使いやすいです。なぜなら、新しいServerlessプロジェクトを初期化後、serverless.ymlファイルやソースコードのみ編集します。他のサーバーなフレームワークに比べて、ファイルはより少ないです。

インストールやCLI

インストール

Node.jsから開発したフレームワークですから、もちろんServerlessはnpmによって管理されます。なので、簡単な方法はnpmです。

npm install -g serverless

参考の分に、Serverlessのドキュメントリンクは他のインストール方法があります。私の意見は、現代のIT開発はNodeJSは大切ですから、やはりNodeJSは一番良い方法です。

CLI

  • 新しいServerlessプロジェクトを初期化
serverless
  • ディスプレイ
serverless deploy
  • ファンクションhelloを呼び出す
serverless invoke -f hello

# 呼び出してログを見る
serverless invoke -f hello --log
  • ログをフェッチ
serverless logs -f hello

# Tail logs
serverless logs -f hello --tail
  • 削除
serverless remove

このコマンドを実行して、全てのAWSリソースは完全に消されます。

例のserverless.ymlファイル

serverless.ymlは、何のAWSサービスを使う、何のファンクションを呼び出す設定ファイルです。この小目、以下の参考リンクNo. 2によってやったserverless.ymlを分析しましょう!

service: language-corrector
frameworkVersion: '3'

provider:
  name: aws
  stage: dev
  region: ap-northeast-1
  profile: Gryqhon
  runtime: python3.8
  ecr:
    images:
      gingerit:
        path: ./
  apiGateway:
    apiKeys:
      - free:
          - language-corrector-free
      - paid:
          - language-corrector-paid
    usagePlan:
      - free:
          quota:
            limit: 100
            offset: 1
            period: MONTH
          throttle:
            burstLimit: 1
            rateLimit: 1
      - paid:
          quota:
            limit: 1000
            offset: 1
            period: MONTH
          throttle:
            burstLimit: 200
            rateLimit: 100

functions:
  gingerit:
    timeout: 10
    memorySize: 256
    image:
      name: gingerit
    events:
      - http:
          path: language_corrector
          method: post
          cors: false
          async: false
          private: false

まずは、

  • service: ディスプレイしたいサービスの名前です。
  • frameworkVersion: バージョンを設定する。optionalです。
  • provider: デプロイクラウドプラットフォームです。デフォルトはAWSです。Google CloudとかAzureとか設定できます。
  • functions: デプロイしたいfunctionたち。

providerの分:

  • name: クラウドプラットフォームによって、 awsとかgoogleとかazureとかです。
  • runtime: サービスの言語。例えばnodejs14.xとかpython3.8とかです。
  • region: optionalです。デフォルトはus-east-1です。日本にデプロイしたいですから、ap-northeast-1を選びます。
  • profile: optionalです。特別なcredentialsを使うのためです。
  • 後はecrとかapiGatewayのような他のサービス。

providerの分:

  • function名、この例はgingeritです。
  • それから、imageとかhandlerの設定です。
  • オプショナル設定:timeoutmemorySize
  • eventはLambdaのトリガーです。 この例は、API Gatewayを使いますから、httpです。 AWS SAMを似てます。

参考

Leave a Reply

Your email address will not be published. Required fields are marked *