主旨
今日は、クラウド開発(サーバレス)をしたことがない!!という人向けに、
ザクっと、AmazonのAWSクラウドサービスを紹介するぞ。
サーバーありきの開発とは大きく異なるクラウド開発が、どのようなものか伝わると良きかな。
Web公開に使うサービス
S3
これはストレージサービス。DropboxやGoogleDriveのイメージに近い。
しかし、後述するサービスと連携することで静的なWeb資材を配置できるぞ。
すなわち、HTMLやJavaScriptを置くところだ。
※S3自体にも外部公開機能は存在するが、推奨されていない。
CloudFront
これはコンテンツデリバリーサービス。
S3上のHTMLファイルを外部公開できるようにしてくれるぞ。
404などのエラーごとにもバラバラのHTMLを設定できる。
Lambda@Edge
後述するLambdaプログラムをHTML表示前に使うことができる機能。
URLの変更や、認証などに使える。ただし、制限が多いサービスなので注意。
使いたい場合は公式マニュアルを先に読んだ方が良い。
WAF
これはファイアウォール。
一般的な攻撃パターンをブロックするのはもちろん、IP制限などを行うことができる。
とりあえず、開発期間中は特定のIPアドレスだけ設定しておけばOK。
作成した後に、CloudFrontに張り付ける。
Route53
これはドメインネームシステム。自分で買ったドメインはここに登録しておく。
ちなみにドメインは持っていなくても、CloudFrontでランダムなものが使用可能。
動的Webサービス
Lambda
これは、サーバレスなコード実行環境。10年前にはない新しい概念。
サーバーなしで関数の実行をマネージドにしたサービス。
アクセスが多ければ、大量に並列実行できたりする。
Node.jsやPython、Javaなどが使える。後述する方法でHTMLと連携もできる。
実行時間制限15分などを設定する。
API Gateway
これは、アプリケーションの「玄関」。
Lambdaに張り付けると、HTMLから呼べるようになる鍵を発行できる。
CORS
コアーズ(クロスオリジンリソースシェアリング機能)により、
外部ドメインでもAjax通信ができるようになるぞ。
全体
CloudWatch
これはログサービス。
LambdaやらURL監視やら、Webサービスの公開に関するログはここに出る。
メール通知機能などもあるぞ。
IAM
これは権限管理。これも独特な概念。
基本的に各サービスはバラバラに独立している。
なので、どのサービスがどのサービスを呼ぶのかの権利を設定する必要があるのだ。
また、IP制限やストレージのアクセス権利なども設定できるぞ。