Skip to content

AWS

CloudFront では us-east-1 (北部バージニア) の ACM 証明書しか使えない

AWS の CDN サービスである CloudFront では、同じく AWS の証明書サービスである ACM で発行した証明書を利用することが出来ます。 AWS のサービスは以下に分類されます。

  1. グローバル・サービス (リージョンに依存しないサービス)
  2. リージョナル・サービス (提供リージョンを指定するサービス)

CloudFront はグローバル・サービスですが、ACM はリージョナル・サービスです。 CloudFront は ACM で発行した証明書を利用出来るのですが、「us-east-1 (バージニア北部) の ACM で発行した証明書しか利用出来ない」という制限に注意する必要があります。

AWS NLB は Source IP/Port を維持するが DSR 動作はしない

AWS Black Belt Online Seminar は毎回、素晴らしい内容です。 2017 年公開の資料なので、最新の情報ではありませんが NLB の基本的動作については ELB Update - Network Load Balancer (NLB) と関連サービス に分かりやすく、且つ、丁寧にかかれています。 この資料の P.20 に下記の記載があります。

  • クライアントの Source IP と Port が、そのまま Target まで届く
    • Target はクライアントと直接通信しているかの様に見える
    • 実際は、行きも帰りも NLB を通っている (DSR ではない)
    • IP Target (後述) の場合は保持されず、NLB からの通信となる
      • Direct Connect は接続されている VPC からのみ通信可能なので、こちらで回避

Instance Target で NLB を設定すると分散対象のサーバでは送信元パケットで「クライアントのアドレス」が確認出来る為、一見すると「NLB は DSR 動作している」ように見えますが、上述の Black Belt 資料に記載がある通り、実は DSR 動作をしていないそうです。 今回は検証環境で実際のトラフィックフローを確認してみました。

AWS API Gateway + Lambda + mangum + FastAPI な Python アプリケーションに POST された JSON を処理する

以前に mangum + FastAPI で ASGI な Python アプリケーションを AWS Lambda + API Gateway 上で動かすというメモを書きました。 mangummangum-cli を使うと FastAPI を使った Web アプリケーションを AWS の LambdaAPI Gateway を使って簡単に公開することが出来ます。

mangum-cli が無い場合は作成したアプリケーションを手動でアプリケーションをアップロードする必要があります。 CloudFormation を使うにしてもテンプレートを作成する必要があり、面倒です。 mangum-cli があればこれらの作業を自動化出来、手間なく、迅速にアプリケーションを配置することが出来ます。

FastAPI で REST API のエンドポイントを作成する場合、POST リクエストを受け付ける必要があります。 こういった場合の「POST された JSON を FastAPI な Python アプリケーションで処理する方法」をメモしておきます。

AWS Lambda で CloudWatch Event からトリガーした場合の event サンプル

AWS Lambda を cron 式で指定時間にトリガーする場合、トリガーには Cloud Watch Event を指定します。 この場合、Lambda のイベントハンドラへ渡される event (JSON オブジェクト) のサンプルは Event Patterns in CloudWatch Events に掲載されています。 実際に CloudWatch Event からトリガーされた場合の event サンプルをメモしておきます。 python-lambda-local からローカル実行する際などにも活用出来ると思います。