AWS - Running Nodeのサーバーレスのクラッシュコース.ラムダオン


とてもエキサイティングなタイトルですね.AWSがサポートを追加していると聞いたとき、私は宣伝されましたcustom runtimes and layers for AWS Lambda . これは、現在共有し、機能間の共通のコードを管理する独自のカスタムアーティファクトを構築することができます.

発表を聞いて気を失ったとは言わない.しかし、私はしました.誰にも言わないで.

どうしましょうか。


この記事では、カスタムノードをフックする方法を示します.ランタイム・トゥ・ウォッツ.サンプル関数を持つ単純なServerlessプロジェクトを作成し、ノードを実行できるようにするレイヤーを追加します.ランタイム.

動作方法


使うcustom runtime , 関数を展開するときに1つを指定する必要があります.関数が起動されると、AWSラムダは実行時コードをブートストラップし、ランタイムAPIを使用して関数コードを実行します.
それはカスタムランタイムについて十分です.何AWS Lambda Layers ? 彼らは任意のコードとデータを含むことができる新しいタイプのアーティファクトです.これは同時に複数の関数で参照することができます.それはとても素晴らしいです!通常、関数はSDKS、ビルド済みのモジュール、ライブラリ、フレームワークのような共通の依存関係を共有します.ここでは、今ではランタイムを共有することができますキッカー、ここにある!
AWSラムダレイヤを使用することで、複数の関数間で使用されるコンポーネントを管理できます.より良いコード再利用とより多くの乾いたコードを許します.
それらを使用して簡単です、あなたはzipで一般的なコードを入れ、層としてAWSラムダにアップロードします.また、CloudFormationテンプレートとしてアップロードすることができますし、それを使用する機能を設定します.レイヤーの内容は、関数のコードに利用できるようになります.しかし、それは別のチュートリアルのトピックです.
カスタムノードを使いましょう.ランタイム!

プロジェクトの設定


私は、あなたにはすでに基本的な理解があると仮定しますthe Serverless Framework . 私もあなたがAWSのアカウントを設定してほしい.あなたがそうしないならば、.please check this out .
注意:サーバーレスフレームワークをv 1に更新します.層支持のための34.0以上

1 .サービスの作成


いつものように我々はすべてのコードを保持する新鮮なサービスが必要です.
$ sls create -t aws-nodejs -p node11 && cd node11
このコマンドを実行した後、あなたはnode11 あなたの機能の構築を開始する素敵なboilerplateと並んでディレクトリ.次のステップを開くにはserverless.yml そして、我々の層を加えてください.

node 11レイヤーをServerlessに追加しました。気象研


そこから選択するために多くのビルド済みの層があります.幸いにも、Serverlessコミュニティは素晴らしいです!我々は先に行くとcustom Node.js runtimes .

どちらかを選ぶことができますがv11 . 開放するserverless.yml 今、すべてのコンテンツを削除し、これを貼り付けます.
service: node11

provider:
  name: aws
  runtime: provided # set to provided

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: /
          method: get
    layers: # add layer
      - arn:aws:lambda:us-east-1:553035198032:layer:nodejs11:3
レイヤーarnを追加するのに十分です、そして、機能はランタイムを拾います.を忘れないでくださいruntime: provided フィールドも.

3 .ハンドラへのコードの追加js


ここから動いて、あなたは家で右に感じます.最後に出血エッジノードを書くことができます.AWSラムダのJSコード.私たちは長い間これを待っていました.
開放するhandler.js 以下のスニペットでペーストします.
exports.hello = async (event, context) => {
  console.log(`Hi from Node.js ${process.version} on Lambda!`)
  return {
    statusCode: 200,
    body: JSON.stringify({ message: `Hi from Node.js ${process.version} on Lambda!` })
  }
}
コードのかなりシンプルな断片が、それはポイントを証明します.確かに我々が走っていることNode.js v11.4.0 .

プロジェクトの配備


Serverlessのフレームワークは、展開を迅速かつ無痛にします.あなたがする必要があるのは一つのコマンドを実行することです.
$ sls deploy
CloudFormationテンプレート、準備リソースを作成し、コードを展開します.オールインワンコマンド.

展開はうまくいった.カールをURLでヒットそれが動作するようにします.
$ curl https://<id>.execute-api.us-east-1.amazonaws.com/dev/
ご覧ください{"message":"Hi from Node.js v11.4.0 on Lambda!"} エコーバックします.それは素晴らしい作品!

ラッピング


AWSラムダ、新しいサポートされている言語、新しいランタイム、および層に最新の改善で、それはちょうどメインVMとコンテナサービスへのサポートサービスよりもはるかに多くなっている.Serverlessアーキテクチャは、計算される力になっています.私は、それがここから我々を連れて行くところを見るのを待つことができません!
Here's the repo あなたがより多くの人々がGithubでそれを見ることを望むならば、あなたがチュートリアルに続いて動けなくなるならば、それにスターを与えてください.あなたが前に私の前のServerlessなmusings頭のいくつかを読みたいならばjoin my serverless newsletter!
あなたが必要ならばserverless analytics framework , チェックアウトCube.js . それはopen source and on GitHub . または、Serverlessなアーキテクチャについてもっと読みたい場合は、Statsbot blog .
  • Building a Serverless Stripe Analytics Dashboard
  • A crash course on serverless-side rendering with React.js, Next.js and AWS Lambda
  • A crash course on Serverless with AWS - Building APIs with Lambda and Aurora Serverless
  • 希望を皆さんと女の子はそれを書いて楽しんだだけでそれを読んで楽しんだ.あなたがそれを好めば、共有することを躊躇しないでください.statsbotのブログにいくつかの愛を与えることを忘れないでください.

    免責事項Zeet 来月のこのブログポストを後援しています.先日試してみた.それはServerlessのようですが、全体のバックエンドを実行するためです.あなたがホストすることができます自動的にアプリケーションをスケール.かなりきちんと.