ハンズオン日記Vol.3:サーバレス編その1

こんにちは。

本日も公式ハンズオンをやっていきます。

今回はサーバレスについてです。

pages.awscloud.com

サーバレスのサービスは触るの初めてなので楽しみです。

ハンズオンと同時に気になった箇所はデベロッパーガイドも見ていきます。

docs.aws.amazon.com

ハンズオンの動画は2019年、

こちらの記事は2022年9月時点の情報となります

 

アジェンダ

# Session
1 Serverless アーキテクチャの概要
2 AWS Lambda の概要
3 AWS Lambda ハンズオン① Lambda を単体で使ってみる
4 AWS Lambda ハンズオン② 他のサービスを呼び出してみる
5 Amazon API Gateway の概要
6 Amazon API Gateway ハンズオン① API Gateway を単体で使ってみる
7 Amazon API Gateway ハンズオン② API Gateway と Lambda を組み合わせる
8 Amazon DynamoDB の概要
9 Amazon DynamoDB ハンズオン①テーブルを作ってみる
10 Amaozn DynamoDB ハンズオン② API Gateway と Lambda と DynamoDB を組み合わせる

使用するサービスはAPI Gateway と Lambda と DynamoDBです

全体を通して

学んだこと
  • Lambda

    • Java、Go、PowerShell、Node.js、C#PythonRubyをサポート
    • メモリは10GBまで使用できるようになっている
    • vCPUは最大で6つ
    • タイムアウトは15分
    • IAMロールで許された動作しかできない
      • 許可の確認は「設定」→「リソースの概要」から確認できる
    • 呼び出しもとリソースで同期・非同期が変わる
      • S3にファイルをアップロードした時にLambda呼び出し、正常に呼び出された段階でS3はユーザへレスポンスを返す(非同期)
      • API GatewayにGETリクエストを送ったときにLambda呼び出し、Lambdaの実行完了時にユーザへレスポンスを返す(同期)
    • ライフサイクル
      • Lambdaはコンテナ上で実行される
      • 利用可能なコンテナがない場合はコンテナ生成から始まる(コールド)
      • 利用可能なコンテナは再利用でされる(ウォーム)
      • 基本設定のタイムアウト値やメモリは「Integer」 型にしないと注意書きが出る
    • ソース変更時は保存だけでなく、Deployする必要がある
    • グローバルスコープに記載したものはウォームスタート時に再利用される
    • 実際の開発時は例外処理を書くようにしよう
  • API Gateway
  • DynamoDB
    • フルマネージドのNoSQLデータベース
    • 3つのAZに保存される
    • AutoScallingできる
    • ストレージの容量制限なし
    • 料金体系(キャパシティを定義する場合)
      • Read、Writeキャパシティユニット
      • ストレージ利用料金
    • Primary Key
      • Partition Key(必須)
      • Sort Key
      • Attributes
        • Primary Key以外はアイテム間で揃ってなくていい
    • Black Beltを確認して理解しよう
    • キャパシティユニットについて
      • R/Wどちらも1ユニットにつき、1秒間で1回
        • Readは最大4KB(強い一貫性を持たなければ2回)
        • Writeは最大1KB
      • 考え方
        • ピーク時に1KB以下の読み込みが秒間130ある
        • →キャパシティは余裕をみて150にする
      • キャパシティの予想が立てられない場合はオンデマンドで構築後、運用してキャパシティの予測を立てていい
    • 操作方法
      • HTTP APIにて操作を行う
      • 作成
        • Put Item
        • BatchWriteItem
      • 更新
        • UpdateItem
      • 取得
        • GetItem(単一データの場合)
        • Query(複数データ:キーの値に基づいて取得)
        • Scan(複数データ:インデックスの全てのデータを呼び出す)

 

詰まったところ
  • 当時のGUIと結構変わっているので少し手間だった
  • JSON形式の書き方に慣れてない
課題
  • DynamoDBのデータ構造について理解を深める
  • DynamoDBのセカンダリインデックスについて理解を深める
  • Lambdaのデプロイ、API Gatewayの設定などCLIでどこまでできるか確認する

おわり