虎塚(144)15この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。こんにちは、虎塚です。高度にスケーラブルなサーバーレスフレームワーク)」を聴講したので、レポートします。Services背景サーバーレスAWSとは何かサーバーレスとは、サーバーのことを考えなくてよいアーキテクチャです。AWSには次のようなサービスがあります。Gatewayを組み合わせて実現します。これによって、開発者はPaaS/BaaSをつなぐ仕事から解放されます。Limiting(応答頻度の制限)が提供されるアプリケーションログとメトリクスの分散がビルトインされているコストが安いからたとえば、次のようなリクエストを処理するシナリオを考えてみましょう。Lambdaにスイッチすることで、ドラスティックな節約が可能になります。Lambdaを使うと何が起きるでしょうか。Lambdaを使うということは、大量のコンテナを使うことを意味します。複数のバージョン、複数の環境にまたがるデプロイ、複数のリージョンにまたがるデプロイ......といった問題が発生します。そのような状況でもAWSリソースはセキュアに保たなければなりません。JAWSとはJAWSとは、AWSサービスを使ったサーバーレスのWeb/モバイル/IoTアプリケーションを開発するための無償のOSSフレームワークです。JavaScriptで実装されています。ソースコードはgithubでホストされていて、4,400スターを集めています(re:Invent後には、4,700スターに至っていました)。Newsでも大変話題になりました。)JAWS=CLIです。Lambdaの集合です。1がリリースされました。V1では次のことが意図されました。サーバーレスなフレームワークの地ならしをすることと、一般にAWSでアプリケーションを作るためのフレームワークを作ることAWSベストプラクティスにしたがいAWS上のタスクを自動化して、学習曲線をなだらかにし、新しく使いはじめる人にもAWSをより使いやすいものにするJAWSを採用する人たちが、AWSのリージョンや環境をまたぐプロダクションベースで使えるようにするとともに、弱点にも習熟してもらうデプロイされたJAWSプロジェクトの詳解JAWSでは、開発ステージ、テストステージ、プロダクションステージというステージ(環境)の概念があります。JAWSのプロジェクトは、2つのリージョンにまたがって作成されます。プロジェクト内で共有されるデータはS3に配置されます。jaws-frameworkのインストールnpmを使ってjaws-frameworkをローカルマシンにインストールします。新規プロジェクトの作成jawsコマンドを使って新規プロジェクトを作成します。directory.JAWSではCloudFormationを使うため、project-nameにはキャメルケースの使用が推奨されています。CloudFormationスタックが作成されるのに5分ほどかかります。この作業はリージョンごとに1回だけ実行すればよく、今後のデプロイはもっと高速に実行できます。CloudFormationスタックの作成が完了すると、ローカルには次のようなファイルとディレクトリの階層が作成されます。filesプロジェクト直下にあるadmin.envファイルのADMIN_AWS_PROFILEで、利用するAWSプロフィールを設定できます。jaws.jsonの確認ローカルのプロジェクトルート/jaws.jsonファイルを確認します。}}上記のjsonが示すとおり、AWS環境には次のような要素が作成されています。プロジェクト作成時に指定したproject-nameとproject-domainが、AWSリソースの名前に使用されます。modules)と呼ぶモジュールを使ったモジュラーアプローチをとっています。これはアプリケーションの構築にAWSリソースを使うように強制するものです。Lambdaがサポートするすべての言語をサポートしますJAWSを使うと、aws-moduleの管理にコマンドを利用できます。ツールをエコシステムから自分のプロジェクトにインストールできます。GatewayやCloudFormationテンプレートのスニペットに依存する他のAWSリソースからなります。JAWSは、インストール時にCloudFormationで生成されるリソースを、ユーザのプロジェクトに追加します。インストール、カスタマイズ、デプロイが簡単にできます。AWSモジュールの作成jawsコマンドでの作成aws-moduleを使ってみましょう。Start用のgreetingsモジュールを作成します。greetings/hello先ほどJAWSプロジェクトを作成した時に作成されたaws_modulesディレクトリの下に、greetings/helloディレクトリが新規に作成されました。LambdaコードをAWSモジュールとしてインストールすることもできます。ここでは、サンプルとして提供されているawsm-imagesモジュールをインストールします。sax@0.5.3)上記の実行ログのとおり、aws_modulesディレクトリの下にaws-images/thumbnailディレクトリが作成されました。AWSモジュールの構造awsm-imagesモジュールのawsm.jsonを確認します。}}envVarsには、モジュールが実行時に必要とする環境変数が定義されています。コードのパッケージをminifyするかどうかといった設定があります。環境変数の設定モジュールに必要な環境変数を定義します。次のコマンドで、設定済みの環境変数を確認できます。envコマンドでは、プロジェクトのS3バケットにある.envファイルを取得/更新します。先ほどのawsm.jsonに定義されていたとおり、awsm-imagesでは、環境変数IMAGE_RESIZE_BUCKETが必要です。必要なJAWS_DATA_MODEL_STAGEは、すでに定義されていましたが、IMAGE_RESIZE_BUCKETはまだないようです。setコマンドで設定します。{BUCKET-NAME}コマンドを実行すると、S3の.envファイルに環境変数IMAGE_RESIZE_BUCKETが追記されます。listコマンドで定義済みの環境変数をもう一度取得してみると、追加した環境変数が表示されます。Lambdaやエンドポイントをデプロイできます。Lambdaを、「E」はエンドポイントを表します。Selected」の行でEnterを押すことで、デプロイが開始されます。デプロイ中は、上記のようにコマンドラインでログを見ることができます。Lambdaコードを保存して圧縮した後、AWSへのアップロードやS3の設定取得をおこない、エンドポイントが出力されるまでの様子を確認できます。Startのhelloモジュールをデプロイすると、「https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/」というエンドポイントが返されます。このURI末尾に「greetings/hello」をつけてアクセスすると、JSONでレスポンスが返ります。successfully!"}なお、レポートを省略しますが、awsms-imagesモジュールを使って画像をリサイズするデモも行われました。startのため起動時コストがかかります。Lambdaにビルトインされている最適化を使って、レスポンスタイムをいくらか短くなるように工夫されています。Lambdaのデプロイプロセスは、次のとおりです。Gatewayはパワフルですが、新しいサービスのため、CloudFormationでまだサポートされていません。APIを構築する手助けをしています。Lambdaのメモリが増大し、多くのトラフィックがある時はほどほどになります。Lambdaが常に暖機されているようにしましょう大事なビジョンJAWSプロジェクトをすぐに作ることができることあらかじめ用意された大量のaws-moduleから必要なものを選択して、開発者が素早くアプリケーションを作れることすべてのファンクションは一度デプロイしてしまえば、あとは簡単にアップデートできることすべてのリージョンにデプロイすること(ぜひそうしましょう。Gatewayのレイテンシーベースのルーティグに期待サーバーレスアプリケーションは、これらによって可能な限り安く、そして高度にスケーラブルになります。おわりにJAWSフレームワークは公開されて間がない上に、今流行のサーバーレスを支援する仕組みということで、セッションにはプログラマと思しき参加者が大勢つめかけていました。Gatewayに対応するまでのワークアラウンドだと思いますが)や、最適化まわりなど、わからないことがまだまだありますが、これを機に触ってみようと思います。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。和樹25こんにちは植木和樹@上越オフィスです。Terminalの機能確定版がリリースされたので試してみました。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。川原征大4形態素解析の入門中で、ブログの内容の分析を試しています。作業効率化をしたという話。夏目祐樹395こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健233こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。