AWSによるサーバーレスアーキテクチャ
翔泳社
著者:Peter Sbarski
訳者:長尾高弘
監修:吉田真吾
序文 Patrick Debois
序文 Donald F.Ferguson
イントロダクション
謝辞
日本語版監修者によるまえがき
本書について
著者について
第1部 導入
第1章 サーバーレスの世界へ
1.1 ここにいたるまでの流れ
1.1.1 SOAとマイクロサービス
1.1.2 ソフトウェア設計
1.2 サーバーレスアーキテクチャの原則
1.2.1 コンピューティングサービスを使ったオンデマンドによるコードの実行
1.2.2 目的が1つでストートレスな関数
1.2.3 プッシュベースのイベント駆動パイプライン
1.2.4 より厚くより強力なフロントエンド
サードパーティサービスの活用
1.3 サーバーからサーバーレスへの乗り換え
1.4 サーバーレスの長所と短所
1.4.1 採用の判断基準
1.4.2 サーバレスを使うべきとき
1.5 まとめ
第2章 アーキテクチャとパターン
2.1 ユースケース
2.1.1 アプリケーションのバックエンド
2.1.2 データ処理
2.1.3 リアルタイム分析
2.1.4 レガシーAPIプロキシ
2.1.5 スケジューリングされたサービス
2.1.6 ボットとスキル
2.2 アーキテクチャ
2.2.1 バックエンド
2.2.2 レガシーAPIプロキシ
2.2.3 ハイブリッドシステム
2.2.4 GraphQL
2.2.5 グルー
2.2.6 リアルタイム処理
2.3 パターン
2.3.1 Commandパターン
2.3.2 Messagingパターン
2.3.3 Priority queueパターン
2.3.4 Fanoutパターン
2.3.5 Pipes and filtersパターン
2.4 まとめ
第3章 サーバーレスアプリケーションの構築
3.1 24-Hour Video
3.1.1 一般的な要件
3.1.2 AWS(Amazon Web Services)
3.1.3 最初のLambda関数の作成
3.1.4 Lambda関数の命名
3.1.5 ローカルテスト
3.1.6 AWSへのデプロイ
3.1.7 Amazon S3のAWS Lambdaへの接続
3.1.8 AWSでのテスト
3.1.9 ログの確認
3.2 Amazon SNSの設定
3.2.1 Amazon SNSのAmazon S3への接続
3.2.2 Amazon SNSによるメール送信
3.2.3 Amazon SNSのテスト
3.3 動画ファイルのアクセス権限の設定
3.3.1 第2のLambda関数のコーディング
3.3.2 設定とセキュリティ
3.3.3 第2の関数のテスト
3.4 メタデータの生成
3.4.1 第3の関数の作成とffprobe
3.5 仕上げ
3.6 演習問題
3.7 まとめ
第4章 クラウドの設定
4.1 セキュリティモデルとID管理
4.1.1 IAMユーザーの作成と管理
4.1.2 グループの作成
4.1.3 ロールの作成
4.1.4 リソース
4.1.5 アクセス権限とポリシー
4.2 ログとアラート
4.2.1 ログのセットアップ
4.2.2 ログデータの有効期限
4.2.3 フィルタ、メトリクス、アラーム
4.2.4 ログデータの検索
4.2.5 Amazon S3とログ
4.2.6 アラームの詳細
4.2.7 AWS CkiufTrail
4.3 料金
4.3.1 請求アラートの作り方
4.3.2 料金のモニタリングと最適化
4.3.3 AWS Simple Monthry Caluculatorの使い方
4.3.4 AWS LambdaとAPI Gatewayの料金計算
4.4 演習問題
4.5 まとめ
第2部 コア機能
第5章 認証と認可
5.1 サーバーレス環境における認証
5.1.1 サーバーレスのアプローチ
5.1.2 Amazon Cognito
5.1.3 Auth0
5.2 24-Hour Videoへの認証の追加
5.2.1 プラン
5.2.2 Lambda関数の直接呼び出し
5.2.3 24-Hour Videoのウェブサイト
5.2.4 Auth0の設定
5.2.5 ウェブサイトへのAuth0の追加
5.2.6 Auth0統合のテスト
5.3 AWSとの統合
5.3.1 ユーザープロファイルLambda関数
5.3.2 API Gateway
5.3.3 マッピング
5.3.4 Amazon API Gateway経由でのLambda関数呼び出し
5.3.5 カスタムオーソライザー
5.4 委任トークン
5.4.1 実世界での例
5.4.2 委任トークンのプロビジョニング
5.5 演習問題
5.6 まとめ
第6章 オーケストレーターとしてのAWS Lambda
6.1 AWS Lambdaの内部
6.1.2 イベントモデルとイベントソース
6.1.3 イベント駆動のプッシュモデルとプルモデル
6.1.4 同時実行
6.1.5 コンテナの再利用
6.1.6 AWS Lambdaのコール状態とウォーム状態
6.2 プログラミングモデル
6.2.1 関数ハンドラ
6.2.2 イベントオブジェクト
6.2.3 コンテキストオブジェクト
6.2.4 コールバック関数
6.2.5 ログ
6.3 バージョニング、エイリアス、環境変数
6.3.1 バージョニング
6.3.2 エイリアス
6.3.3 環境変数
6.4 CLIの使い方
6.4.1 コマンドの実行
6.4.2 関数の作成とデプロイ
6.5 AWS Lambdaのパターン
6.5.1 非同期ウォータフォール
6.5.2 seriesとparallel
6.5.3 ライブラリの使い方
6.5.4 他のファイルへのロジックの分離
6.6 Lambda関数のテスト
6.6.1 ローカルテスト
6.6.2 テストの作成
6.6.3 AWSでのテスト
6.7 演習問題
6.8 まとめ
第7章 Amazon API Gateway
7.1 インターフェイスとしてのAmazon API Gateway
7.1.1 AWSサービスとの統合
7.1.2 キャッシング、スロットリング、ロギング
7.1.3 ステージングとバージョニング
7.1.4 スクリプティング
7.2 Amazon API Gatewayの操作
7.2.1 プラン
7.2.2 リソースとメソッドの作成
7.2.3 メソッド実行の設定
7.2.4 Lambda関数
7.2.5 ウェブサイトの修正
7.3 ゲートウェイの最適化
7.3.1 スロットリング
7.3.2 ロギング
7.3.3 キャッシング
7.4 ステージとバージョン
7.4.1 ステージ変数の作成
7.4.2 ステージ変数の使い方
7.4.3 バージョン
7.5 演習問題
7.6 まとめ
第3部 アーキテクチャの拡張
第8章 ストレージ
8.1 賢いストレージ
8.1.1 バージョニング
8.1.2 静的ウェブサイトのホスティング
8.1.3 ストレージクラス
8.1.4 オブジェクトのライフサイクル管理
8.1.5 Transfer Acceleration
8.1.6 イベント通知
8.2 セキュアなアップロード
8.2.1 アーキテクチャ
8.2.2 アップロードポリシーLambda関数
8.2.3 S3 CORS設定
8.2.4 ウェブサイトからのアップロード
8.3 ファイルへのアクセス制限
8.3.1 公開アクセスの無効化
8.3.2 署名済みURLの生成
8.4 演習問題
8.5 まとめ
第9章 データベース
9.1 Firebase入門
9.1.1 データ構造
9.1.2 セキュリティルール
9.2 24-Hour VideoへのFirebaseの追加
9.2.1 アーキテクチャ
9.2.2 Firebaseのセットアップ
9.2.3 動画トランスコードLambdaの修正
9.2.4 動画のトランスコード後のFirebaseの更新
9.2.5 Lambda関数の接続
9.2.6 ウェブサイト
9.2.7 エンドツーエンドのテスト
9.3 ファイルへのアクセスの保護
9.3.1 署名済みURL Lambda関数
9.3.2 Amazon APU Gatrwayの設定
9.3.3 ウェブサイトの再度の書き換え
9.3.4 パフォーマンスの向上
9.3.5 Firebaseのセキュリティの向上
9.4 演習問題
9.5 まとめ
第10章 仕上げの学習
10.1 デプロイとフレームワーク
10.2 よりよいマイクロサービスのために
10.2.1 エラー処理
10.3 AWS Step Functions
10.3.1 プログラム例
10.4 AWS Marketplaceが開くビジネスチャンス
10.5 これからの展開のために
付録A サーバーレスアーキテクチャのためのサービス
A.1 Amazon API Gateway
A.2 Amazon SNS(Simple Notification Service)
A.3 Amazon S3(Simple Storage Service)
A.4 Amazon SQS(Simple Queue Service)
A.5 Amazon SES(Simple Email Service)
A.6 Amazon RDS(Relational Database Service)とAmazon DynamoDB
A.7 Amazon CloudSearch
A.8 Amazon Elastic Transcoder
A.9 Amazon Kinesis Data Streams
A.10 Amazon Cognito
A.11 Auth0
A.12 Firebase
A.13 その他のサービス
付録B インストールとセットアップ
B.1 システムの準備
B.2 IAMユーザーとCLIのセットアップ
B.3 ユーザーアクセス権限の設定
B.4 新しいS3バケットの作成
B.5 IAMロールの作成
B.6 Lambda関数のための準備
B.7 Amazon Elastic Transcoderの設定
B.8 npmのセットアップ
付録C 認証と認可について
C.1 認証と認可の基本
C.2 JWT
付録D AWS Lambdaの内部
D.1 実行環境
D.2 制限
D.3 古いランタイムの扱い方
D.3.1 succeed
D.3.2 fail
D.3.3 done
付録E モデルとマッピング
E.1 動画リストの取得
E.1.1 GETメソッド
E.1.2 エラー処理
E.1.3 Amazon API Gatewayのデプロイ
付録F Amazon S3のイベントメッセージ構造
F.1 S3イベントメッセージの構造
F.2 覚えておくべきこと
付録G Serverless FrameworkとAWS SAM
G.1 Serverless Framework
G.1.1 インストール
G.1.2 Serverless Frameworkの初歩
G.1.3 Serverless Frameworkの使い方
G.1.4 パッケージング
G.1.5 テスト
G.1.6 プラグイン
G.1.7 例
G.2 AWS SAM
G.2.1 始め方
G.2.2 AWS SAMを使った例
G.3 まとめ
索引