AWSラムダ関数、Amazon APIゲートウェイおよびServerless Frameworkを使用したServerless Backendの作成

5568 ワード

Serverlessバックエンドは、サービスとしてバックエンドと呼ばれ、サービスとして機能する.
Wikipediaによると、Serverless Computingはクラウド・コンピューティングの実行モデルであり、クラウド・プロバイダがマシン・リソースをオンデマンドに割り当て、顧客に代わってサーバを管理する.

Serverlessなアーキテクチャの長所
  • ServerLessは本質的にスケーラブルです.
  • あなたのServerlessな機能が走っているとき、あなたが支払うだけであるので、より低コストでより効率的な
  • 展開して更新する
  • サーバ管理は不要です

  • 無口な建築の短所
  • ServerLessは長時間の処理のために作られていません、それは時間枠を持っています.例えば、15分後にAWSラムダタイムアウト.
  • デバッグと監視ツールのプロバイダに依存するのでデバッグするのは難しいです
  • 長い実行中の処理は、サーバーに比べてサーバーレスでより高価になる可能性があります
  • あなたのServerlessなバックエンドがその最初の機能要求を扱うのに少しの時間がかかるかもしれません.
  • クライアントのOS情報に関する情報を以下のツールで返すServerless Backend Endpointを作成します.
  • Serverless Framework—サーバレスアプリケーションの展開と管理のためのより汎用的ツール
  • AWSラムダ-サーバーをプロビジョニングまたは管理せずにコードを実行し、ワークロードを意識したクラスタスケーリングロジックを作成し、イベント集約を維持するか、ランタイムを管理するServerless Computeサービス
  • APIゲートウェイ-開発者が作成し、公開、維持、監視、およびセキュリティを任意の規模でAPIを簡単にする完全に管理サービス
  • ChromeのV 8 JavaScriptエンジンに組み込まれたJavaScriptランタイム

  • 始める
  • もう持っているに違いないNodejs あなたのローカルマシンにインストールされています.
  • あなたもAWS account ,
  • また、作成する必要がありますIAM user プログラムのアクセスでは、この記事のために、rootユーザを使います.
  • アクセスキーのIDと秘密のアクセスキーをコピーしますAWS console
  • インストールServerless グローバルなフレームワークを使用して
    npm install -g serverless
    
    サーバレスのAWS資格情報の設定
    serverless config credentials --provider aws --key AKJAPB7TR3*** --secret ****F4WA1JfG1sx9+7/+kKg/a
    
    AWSコンソールからコピーしたキーと秘密を置き換えます.あなたはAzure、AWS、GCP等のような異なるプロバイダでServerlessを使用できます.
    Serverless AWS NODEJSテンプレートを使用したServerlessプロジェクトの作成
    serverless create --template aws-nodejs --path clientOs
    
    上記のコマンドは* clientos *と呼ばれるフォルダを作成し、このフォルダの内部に次のファイル/フォルダが表示されます.
  • .Serverlessフォルダー(このフォルダには生成されたCloudFormationファイルとZip - Blagsが含まれています)は、フォルダなしの展開を実行するたびにフォルダが再生成されます
  • .ギティノーファイル
  • ハンドラ.jsファイル
  • 無力.YMLファイル(このファイルにはサーバレスの配備設定が含まれています)
  • ハンドラ.js
    'use strict';
    const os = require('os');
    
    module.exports.getOsInfo = async (event) => {
      return {
        statusCode: 200,
        body: JSON.stringify(
          {
            osName: os.hostname(),
            osPlatform: os.platform(),
            osCPU: os.cpus(),
            // 1mb = 1048576
            osMemory: os.totalmem() / 1048576,
          },
          null,
          2
        ),
      };
    };
    
    
    ハンドラを更新しました.クライアントのオペレーティングシステム情報を取得するJS.nodejsライブラリからOSをインポートし、hostname ()やplatform ()などの異なるメソッドをコールしました.
    無力.気象研
    service: clientos
    
    provider:
      name: aws
      runtime: nodejs12.x
    
    functions:
      getOsInfo:
        handler: handler.getOsInfo
    
    私も、Serverlessを更新しました.我々がちょうど作成した新しい機能によるYML.私はgetosinfo関数を追加しました.
    ローカルで関数をテストする
    sls invoke local -f getOsInfo
    
    AWSに関数を配備する
    sls deploy
    
    あなたは、あなたのAWSコンソール、ラムダを捜してログインすることができます

    アマゾンAPIゲートウェイ
    Amazon API Gateway 開発者が作成し、公開、維持、監視、および任意の規模でAPIを確保することを容易にする完全に管理されたサービスです.Apisはアプリケーションのためのフロントドアとして機能します.APIゲートウェイを使用すると、リアルタイム双方向通信アプリケーションを有効にするRESTful APIとWebSocket APIを作成できます.APIゲートウェイは、Webアプリケーションと同様に、コンテナやサーバーレスのワークロードをサポートしています.
    AmazonAPIゲートウェイを使ってGetosInfo関数のAPIエンドポイントを作成します.Serverlessのフレームワークではかなり簡単です.必要なのはServerlessのコードを追加することです.YMLと配備
    events:
      - http:
          path: client/os
          method: get
    
    HTTPを使用してイベントを追加します.
    service: clientos
    
    provider:
      name: aws
      runtime: nodejs12.x
    
    functions:
      getOsInfo:
        handler: handler.getOsInfo
        events:
          - http:
             path: client/os
             method: get
    
    あなたの更新Serverless.YMLはこのようになります.
    AWSに関数を配備する
    sls deploy
    
    コンソールをチェックしてください
    endpoints:
      GET - [https://shs8k2mrea.execute-api.us-east-1.amazonaws.com/dev/](https://shs8k2ryia.execute-api.us-east-1.amazonaws.com/dev/say/hello)client/os
    
    あなたはURLをコピーして、あなたのブラウザーまたはポストマンまたはどちらの好みのツールにでもそれをテストすることができます.

    概要
  • 無セル計算の定義を学習した
  • 私たちは、Serverlessの賛否両論を学びました
  • 私たちは、Serverlessなフレームワーク、AWSラムダ、Amazon APIゲートウェイとNonjesを使用しているAPIでServerlessなバックエンドを作成する方法を学びました
  • ローカルで関数をテストする方法を学びました
  • 機能の配備方法を学びました
  • 次の記事では、CloudFormationテンプレートを使用してServerlessアプリケーションを展開する方法を紹介します