はじめに
第1章 AWS SAMとTypeScriptで作るアプリケーション開発(森岡 周平)
第2章 Elasticsearchを利用したECサイトの構築(太田 佳敬)
第3章 AWS IoT(佐々木 美穂)
第4章 AWS Media Servicesで構築するサーバーレスな動画サイト(矢田 裕基)
第5章 AWS Media Servicesによるサーバーレスアーキテクチャーの歩き方(矢田 裕基)
著者紹介
本書は、「Amazon Web Service(以降、AWS)でサーバーレスな構成がしたいけど、実際にどのように設計したほうがいいかわからない」という人のために向けられた、実例を紹介しながらサーバーレスの設計がわかっていくガイドブックです。
本書は技術書展3で頒布された「雰囲気でわかるAWS SAM (Local)」の次のステップになるものを目指し、企画されました。同書ではAWS LambdaやAmazon API Gateway、DynamoDBなどの基本的なサービスを紹介しましたが、実際にサーバーレスでの開発をしようとすると、そのときどきの要件に合わせてAWSの用意する様々なサービスを組み合わせる必要が出てきます。そこで本書ではまず要件を定義し、そこからサーバーレスで使えるAWSの様々なサービスの使い方を解説しつつ、AWSにおけるサーバーレス構成の使い方や考え方を学習していく本となっています。各章で使うサービスや構成が異なっているので、どの章も設計を考える上で参考になるでしょう。
今後もっと様々な構成を紹介できるようにしようと考えていますので、AWSを使う上で何かの参考になれば幸いです。
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書籍は、技術系同人誌即売会「技術書典4」で頒布されたものを底本としています
本章ではAWS SAMと、その開発を補助するツールであるAWS SAMについて、その概要と簡単な実行方法について説明します。そして、SAMを使ってTypeScriptを使った簡単なアプリケーションの開発方法についても紹介します。
AWS SAMの“SAM”とは、“Serverless Application Model”の略称で、サーバーレスなアプリケーションを構築するためにAWSが公式で提供しているフレームワークです。
AWS SAMはAWS CloudFormationの拡張であり、必要なリソースは基本的にCloudFormationで記述します。利用する際は、次のようにTransformセクションを指定する必要があります。
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31' # CloudFormationでSAMを利用するための宣言
Resources:
MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: index.handler
Runtime: nodejs8.10
CodeUri: 's3://my-bucket/function.zip'
AWS SAMで拡張されたCloudFormationの機能は、次の2点です。
・Lambda、API Gateway、DynamoDBのリソースに関する機能追加
・Lambda関数のpackage、デプロイ機能の追加
もちろん従来のCloudFormationの機能はそのまま使えるため、AWS SAMで拡張されていないリソースをそのまま定義することも可能となっています。
AWS SAMはAmazon自身が公式に提供しているとあって、数多くの機能がサポートされています。たとえば2017年のre:Inventにおいて、AWS SAMにDeploymentPreferenceというプロパティーが追加されました。これはサーバーレスなアプリケーションにおいて、Canary Releaseを実現する機能となっており、数行の設定で実現できます。またAWS X-Rayを用いて、パフォーマンスなどの監視を容易に実現することもできます。Serverless Application Repositoryのおかげで、他の人が作った機能をパラメータだけ埋めて、気軽に再利用も可能です。
このようにAWS SAMは、AWS上でサーバーレスなアプリケーションを構築する上で選ばれうるフレームワークの中で、最も有力なもののひとつとなっています。