Serverless #1 サーバーレスアーキテクチャで翻訳 Web API を構築する

AWS Hands-on for Beginners Serverless #1 サーバーレスアーキテクチャで翻訳 Web API を構築する | AWS Webinar

  • AWS Lambdaの特徴
    • サーバーのプロビジョニング/管理なしでプログラムを実行できるサービス
    • コードの実行やスケーリングに必要なことは、Lambda側で実施するので、開発者の方はコードを書くことにより集中できる
    • リクエストベースの料金体系(実行回数 + 実行時間)
  • Lambda のライフサイクル
    • Lambda は呼び出されると、コンテナ上でプログラムを実行する
    • 1つのコンテナで同時に実行できるのは1つのリクエストまで
    • コンテナは再利用されるが、利用可能なコンテナがないときはコールドスタート
      • コンテナ生成→デプロイ→ランタイム起動/初期化→メソッド起動

https://pages.awscloud.com/rs/112-TZM-766/images/03_lambda_stand_alone.py

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/translate.html

https://pages.awscloud.com/rs/112-TZM-766/images/04_lambda_translate.py

  • Amazon API Gatewayの特徴
    • サーバーをプロビジョニング/管理することなく、APIを作成・管理できるマネージドサービス
    • 可用性の担保、スケーリング、APIキー管理といったAPI開発で必要なことを API Gateway に任せることで、開発者はビジネスの差別化に繋がる作業に集中できる
    • REST API と WebSocket に対応
    • リクエストベースの料金体系(REST API の場合)
      • 実行回数 + データ転送料金
  • API Gateway の使い方
    • リソースとメソッドタイプの定義→メソッドリクエストの設定→統合タイプの設定→リクエスト/レスポンス変換の定義→デプロイ

https://pages.awscloud.com/rs/112-TZM-766/images/06_apigw-mock.json

https://pages.awscloud.com/rs/112-TZM-766/images/07_lambda_apigw.py

API Gateway で統合レスポンスを設定する - Amazon API Gateway

  • Amazon DynamoDB の特徴
    • フルマネージド型の NoSQL データベースサービス
    • 3つの Availability Zone に保存されるので信頼性が高い
    • 必要要件に応じて、テーブルごとにスループットキャパシティを定義する
    • ストレージの容量制限がない
    • 料金体系
      • 設定した Readキャパシティユニット + Writeキャパシティユニット + ストレージ利用料

https://pages.awscloud.com/rs/112-TZM-766/images/10_lambda_dynamodb.py

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/table/index.html

https://pages.awscloud.com/rs/112-TZM-766/images/11_lambda_function_with_exception_handling_example.py

スケーラブルウェブサイト構築編

AWS Hands-on for Beginners Amazon スケーラブルウェブサイト構築編 | AWS Webinar

セキュリティグループの作成で、データベース(RDS)のセキュリティグループを作成する。
その場合、インバウンドルールのソースに「Word Press」をインストールした EC2 のセキュリティグループを指定する。

RDSでは、DB サブネットグループを作成する。
前準備として、VPCでサブネットを作り、EC2でセキュリティグループを作る。

ELBはEC2から作成する。
前準備として、セキュリティグループを作り、ターゲットグループを作る。

マルチAZ配置で、スタンバイインスタンスを作成する事ができる。

Network編#3 クライアントVPNをつかって、リモート接続環境を構築しよう

AWS Hands-on for Beginners Network編#3 クライアントVPNをつかって、リモート接続環境を構築しよう | AWS Webinar

  • CloudWatch
    • ロググループの作成→ログストリームの作成

クライアント承認 - AWS クライアント VPN

注意すべきところ
VPC(198.19.0.0/16)へのアクセスのみVPN接続経由するようにするため、このハンズオンでは必ずスプリットトンネルを有効にしてください。

AWS Client VPN Download | Amazon Web Services

Network編#2 Amazon VPC間およびAmazon VPCとオンプレミスのプライベートネットワーク接続

AWS Hands-on for Beginners Network編#2 Amazon VPC間およびAmazon VPCとオンプレミスのプライベートネットワーク接続 | AWS Webinar

  • 複数のVPCを利用する
    • 環境ごとに分ける(本番、検証、開発)
    • システムごとに分ける
  • VPC間を接続する方法
    • VPCピアリング接続
      • 2つのVPC間をプライベートに接続するサービス
      • 異なるリージョン間、異なるAWSアカウント間の接続をサポート
    • Transit Gateway接続
      • 多くの数のVPCを接続する場合、ネットワークを簡素化することが可能(HUB化)

https://tetsuyaohira.com/posts/2022-11-26-cloud9-error/
public サブネットの パブリック IPv4 アドレスの自動割り当てを「はい」にしないと EC2 インスタンスを作成できずにエラーになる。
インターネットゲートウェイを作る理由はここにあった。

  • VPCとオンプレミスを接続する

04 Amazon VPCと仮想ルータの作成からは視聴のみ。

Network編#1 AWS上にセキュアなプライベートネットワーク空間を作成する

AWS Hands-on for Beginners Network編#1 AWS上にセキュアなプライベートネットワーク空間を作成する | AWS Webinar

  • Amazon VPC の基本を理解する
  • Amazon VPC を使ってAWS上にプライベートネットワーク空間を作成する
  • Amazon VPC とインターネットの接続をコントロールする方法を理解する
  • VPCエンドポイントを使ってAWSマネージドサービスに接続する方法を理解する
  • Amazon VPC
    • Public/Private Subnet
    • Internet gateway
    • Route table
    • NAT gateway
    • Endpoints
    • PrivateLink
    • Elasstic IP adress
  • サブネットの Public/Private は、ルートテーブルとの関連付けで決まる。
    • パブリックサブネット
      • ルーティングテーブルにインターネットゲートウェイへのエントリがあり、インターネットとインバウンド/アウトバウンドのアクセスが可能
    • プライベートサブネット
      • ルーティングテーブルにインターネットゲートウェイへのエントリはなく、インターネットから直接アクセスできない
      • パブリックサブネットに設置したNATやプロキシを経由する事で、インターネットへのアウトバウンドのアクセスが可能
  • ルートテーブル
    • VPCの各サブネットは必ず1つのルートテーブルが関連付け(アソシエート)されている
    • 1つのルートテーブルに異なる複数のサブネットを関連付けることが可能
    • ルートテーブルにはメインが存在する
    • ルートテーブルの経路選択は最長プレフィックス一致(ロンゲストマッチ)にて、経路の優先度が決まる

ユーザーデータに入力。

#!/bin/bash

yum -y update
yum -y install httpd
systemctl enable httpd.service
systemctl start httpd.service
  • プライベートサブネットからインターネットに行く場合は NAT を利用する。
    • NAT instance
    • NAT Gateway(主流)

Elastic IP 割り当てを行う事で、グローバルIPが割り当てられる。

  • Gateway
    • S3、DynamoDBとの接続方式
  • Interface側
    • SSM、CloudWatch、S3など、その他サポートされているサービス

VPC Endpoint(Interface側)

サブネット上にインターフェイスを作成する。

  • 下準備
    • DNS ホスト名を有効化
    • セキュリティグループを作成
      • インバウンドルール HTTPS 10.0.0.0/16 

VPC Endpoint(Gateway側)

  • 下準備
    • S3 バケットを作成
    • IAM Role にポリシーを追加