Open3

APIGatewayあれこれ

mocknmockn

CloudWatch連携

CloudWatch ログ

  • 選択し
    • オフ
      • デフォルト
    • エラーのみ
      • ERRORレベルのログのみロギング有効化
    • エラーと情報ログ
      • ERRORレベルのログのみロギング有効化(すべてのイベントのロギングが有効)
    • リクエストとレスポンスの全ログ
      • API のトラブルシューティングには役立つが、機密データがログに記録される可能性がある
  • アクセスおよびデバッグログには、標準の CloudWatch 料金が課金される
  • 設定は自由に切り替え可能(有効化後に無効化できる)

CloudWatchメトリクス

基本的なCloudWatchメトリクス(標準メトリクス)

  • デフォルトで有効
  • API名、ステージ名、全体

詳細なCloudWatchメトリクス(カスタムメトリクス)

  • デフォルトで無効
  • API コール、レイテンシー、統合のレイテンシー、400 エラー、500 エラー
  • メトリクスには、標準の CloudWatch 料金が課金される
  • 設定は自由に切り替え可能(有効化後に無効化できる)

料金

  • 有効なメトリクス数
    • カスタムメトリクスを有効化すると、自動的に5つのメトリクス収集が行われる(1つにはできない?)
  • APIリクエスト数
  • メトリクスダッシュボード数
  • ログのストレージ利用量
  • アラーム数

最小の利用料

Config Summary

Number of Metrics (includes detailed and custom metrics) (5), GetMetricData: Number of metrics requested (43200), GetMetricWidgetImage: Number of metrics requested (), Number of other API requests (), Number of Dashboards (1), Number of Standard Resolution Alarm Metrics (1), Standard Logs: Data Ingested (1 GB)

カスタムアクセスのログ記録

  • デフォルトで無効
  • 設定後に切り替え可能?
  • ログを受信するには、CloudWatch グループ ARN または Kinesis Firehose データストリーム ARN を入力が必要
  • アクセスログ形式には $context.requestId または $context.extendedRequestId のいずれかを含める必要がある

X-Ray トレース

  • デフォルトで無効
  • 設定後に切り替え可能?
  • X-Ray トレースを有効にすると、API Gateway により、「xray:PutTraceSegments」、「xray:PutTelemetryRecords」アクセス権限を持つ IAM ロールが作成される
  • 標準の X-Ray 料金が適用される
mocknmockn

CloudFrontからのアクセスに制限する(Resource Policy)

概要

  • APIGatewayのアクセス元をCloudFrontに制限したい。
  • CloudFrontでReferer keyを設定し、APIGatewayのResource PolicyでReferer keyを参照するよう設定する。

Cfnテンプレート

APIGateway (AWS SAM)


Auth:
  ResourcePolicy:
    CustomStatements: [{
                         "Effect": "Allow",
                         "Principal": "*",
                         "Action": "execute-api:Invoke",
                         "Resource": "execute-api:/Prod/GET/pets",
                         "Condition": {
                           "StringEquals": {
                             "aws:Referer": !Ref {RefereKey}
                           }
                         }
                       }]

参考

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-property-api-resourcepolicystatement.html#sam-api-resourcepolicystatement-customstatements
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-controlling-access-to-apis-resource-policies.html
https://qiita.com/cony0413/items/18551d314b445a864e87