1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS API Gateway 設定を調べる

Last updated at Posted at 2019-10-06

#目的
API Gatewayの設定を把握し、必要に応じて使用できるようになること
#画面キャプチャ(一部)
キャプチャ.JPG
キャプチャ.JPG
キャプチャ.JPG

#各種設定について
##リソース
#####<APIのリソース設定>
リソース、メソッド(GET,POST,DELETE・・・)、メソッドのデプロイ(デプロイするとURLでアクセス可能となる)
#####<メソッドリクエスト>
リクエストに認証が必要か、どのクエリパラメータを受け付けるか、APIキーが必要か
※パラメータを必須し、そのパラメータがないと、バックエンドに行く前にエラーにする
※各パラメータごとにキャッシュURLに含むか設定できる。(ここで設定しても、最終的にステージの設定でキャッシュを有効にするかどうか設定する必要あり)
#####<統合リクエスト>

  • 統合タイプ→Lambda関数・http・モック・AWSサービス・VPCリンク
  • Lambdaプロキシ統合の使用→APIGatewayへアクセスが来た際のhttpヘッダー・ボディをそのまま、バックエンドのプログラムへ転送。
  • デフォルトタイムアウト→デフォルトは29秒、バックエンドのタイムアウトがこの設定より長いと意味なし。
  • マッピングテンプレートなど→ヘッダ、ボディ、パラメータなどをバックエンドに渡す際に変換して渡す。

#####<統合レスポンス>
レスポンスの文字列の正規表現による、httpステータス(※4メソッドレスポンス)とのマッピング、レスポンス内容の変換
#####<メソッドレスポンス>
httpステータス・レスポンスヘッダー・content-type・モデルの設定 ※content-type未指定の場合はデフォルトのapplication/json
##ステージ
ステージング設定(開発環境、本番環境で分けるなど)、また各ステージごとの詳細設定
(キャッシュ、スロットリング、WAF、クライアント証明書、ログ出力、X-RAY、ステージ変数[環境変数]、SDKの作成、エクスポート、デプロイ[バージョン管理]、Canary[A/Bテスト用、新バージョン・旧で振り分ける])
##オーソライザー
アクセス制限(lambdaを使用してのIP/UA制限など、またはCognito認証)
※Cognito認証→クライアントAPI実行時にログイン認証を行い、IAMロールを使用して権限を払い出す仕組み
 クライアントにIAMユーザーのアクセスキーやシークレットキーを持たさなくていい。
##ゲートウェイのレスポンス
httpステータスごとの戻り値を設定
##モデル
リソースのメソッドリクエスト、メソッドレスポンスで使用。
設定しただけでは何も変わらない、ステージ>SDKの生成時に型変換として使われる。
https://qiita.com/toshihirock/items/9dfc982a90ab2141f048
##リソースポリシー
アクセス制限(AWSアカウント、IP、UA、VPCなど)
※オーソライザーより設定が容易(リソースポリシーで事足りる制限ならこちらがいい)
##ドキュメント
APIの各設定のドキュメント(説明)を記載できる。APIの設計書をエクスポートするときの説明用。
##ダッシュボード
解析(API呼び出し回数、レイテンシーなど)
##設定
API キーのソース(X-API-Key ヘッダーにのせるか、オーソライザーのlambdaの戻り値にのせるか)・コンテンツのエンコード・バイナリメディアタイプの設定
##使用量プラン
APIキーごとにスロットリングの設定を変える(レート、バースト)※通常会員とプレミア会員で差をつけるなどに使用可能
##APIキー
使用量プランに紐づける、APIキーの設定 ※設定したあとに、リソースのAPIキーが必要かの設定をしないと有効にならない
##カスタムドメイン名
ドメイン設定
##クライアント証明書
バックエンドのHTTPと通信する場合の証明書
##VPCリンク
VPC内 HTTP (S) リソースへのアクセスを、一般のインターネットを経由しないようにする。
##設定
CloudWatch ログのロールの設定する。この設定をしないと、ステージのログ出力の有効化はできない。
※必要なポリシーは、”AmazonAPIGatewayPushToCloudWatchLogs”

#その他
###ajaxからAPIへアクセスする場合
CORSの有効化が必要
※クロスドメインになるため
###アクセスを制限する方法
・WAF
・APIキー
・オーソライザー(lambda, cognito)
 ①lambda→IP、AUなど
 ②cognito→ログイン認証
・リソースポリシー
 →IP、AU、IAM、VPCなど
 https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-resource-policies-aws-condition-keys.html
・リクエストの検証
 ①クエリパラメータ
  ※必須パラメータがないとはじくなど
 ②ヘッダー
 ③本文
※簡単にできるIP制御は、リソースポリシーかな。 

※サンプル(リソースポリシーのIPブラックリスト)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-northeast-1:【アカウントID】:【リソースID】/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "【アクセスを拒否するIP】"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-northeast-1:【アカウントID】:【リソースID】/*"
        }
    ]
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?