AWS API Gatewayは、開発者が大規模なAPIを作成、公開、監視するために設計されたAmazon Web Services(AWS)が提供する包括的なサービスです。これはアプリケーションへのエントリーポイントとして機能し、開発者がルールと手順のフレームワークを確立できるようにします。このフレームワークは、外部ユーザーがアプリケーション内の特定のデータや機能にアクセスする方法を規定します。
API Gatewayを使用すると、APIへのリクエストの処理方法を定義でき、特定のメソッド(例:GET、POST、PUT、DELETE)とリソースを持つカスタムAPIエンドポイントを作成できます。また、クライアントSDK(ソフトウェア開発キット)を生成して、開発者がアプリケーションからAPIを呼び出しやすくすることもできます。
リソース: API Gatewayでは、リソースはAPIの構造を構成するコンポーネントです。これらはAPIの異なるパスやエンドポイントを表し、APIがサポートするさまざまなアクションに対応します。リソースは、各パス(/、または/users、または/user/{id}内の各メソッド(例:GET、POST、PUT、DELETE)を表します。
ステージ: API Gatewayのステージは、開発、ステージング、本番などのAPIの異なるバージョンや環境を表します。ステージを使用して、複数のバージョンのAPIを同時に管理および展開し、新機能やバグ修正を本番環境に影響を与えることなくテストできます。ステージはまた、現在のステージに基づいてAPIの動作を構成するために使用できるキーと値のペアであるステージ変数をサポートします。たとえば、ステージ変数を使用して、ステージに応じてAPIリクエストを異なるLambda関数や他のバックエンドサービスにリダイレクトすることができます。
ステージは、API GatewayエンドポイントのURLの先頭に表示されます。
認証者: API Gatewayの認証者は、リクエストが続行される前に呼び出し元のアイデンティティを検証することによって、APIへのアクセスを制御します。カスタム認証者としてAWS Lambda関数を使用でき、独自の認証および承認ロジックを実装できます。リクエストが届くと、API Gatewayはリクエストの認証トークンをLambda認証者に渡し、トークンを処理して呼び出し元が実行できるアクションを決定するIAMポリシーを返します。API Gatewayはまた、AWS Identity and Access Management(IAM)やAmazon Cognitoなどの組み込み認証者をサポートしています。
リソースポリシー: API Gatewayのリソースポリシーは、APIへのアクセス権限を定義するJSONドキュメントです。これはIAMポリシーに似ていますが、API Gatewayに特化しています。リソースポリシーを使用して、APIにアクセスできるユーザー、呼び出せるメソッド、接続できるIPアドレスやVPCを制御できます。リソースポリシーは認証者と組み合わせて、APIの細かいアクセス制御を提供できます。
# Generic infoawsapigatewayget-accountawsapigatewayget-domain-namesawsapigatewayget-usage-plansawsapigatewayget-vpc-linksawsapigatewayget-client-certificates# Enumerate APIsawsapigatewayget-rest-apis# This will also show the resource policy (if any)## Get stagesawsapigatewayget-stages--rest-api-id<id>## Get resourcesawsapigatewayget-resources--rest-api-id<id>## Get API resource action per HTTP verb (check authorizers and api key required)awsapigatewayget-method--http-methodGET--rest-api-id<api-id>--resource-id<resource-id>## Call APIhttps://<api-id>.execute-api.<region>.amazonaws.com/<stage>/<resource>## API authorizersawsapigatewayget-authorizers--rest-api-id<id>## Modelsawsapigatewayget-models--rest-api-id<id>## More infoawsapigatewayget-gateway-responses--rest-api-id<id>awsapigatewayget-request-validators--rest-api-id<id>awsapigatewayget-deployments--rest-api-id<id># Get api keys generatedawsapigatewayget-api-keys--include-valueawsapigatewayget-api-key--api-key<id>--include-value# Get just 1## Example use API keycurl-XGET-H"x-api-key: AJE&Ygenu4[..]"https://e83uuftdi8.execute-api.us-east-1.amazonaws.com/dev/test## Usage plansawsapigatewayget-usage-plans#Get limit use infoawsapigatewayget-usage-plan-keys--usage-plan-id<plan_id>#Get clear text values of api keysawsapigatewayget-usage-plan-key--usage-plan-id<plan_id>--key-id<key_id>###Already consumedawsapigatewayget-usage--usage-plan-id<plan_id>--start-date2023-07-01--end-date2023-07-12
# Generic infoawsapigatewayv2get-account--awsapigatewayv2get-domain-namesawsapigatewayv2get-domain-name--domain-name<name>awsapigatewayv2get-usage-plans--awsapigatewayv2get-vpc-linksawsapigatewayv2get-client-certificates--# Enumerate APIsawsapigatewayv2get-apis# This will also show the resource policy (if any)awsapigatewayv2get-api--api-id<id>## Get all the info from an api at onceawsapigatewayv2export-api--api-id<id>--output-typeYAML--specificationOAS30/tmp/api.yaml## Get stagesawsapigatewayv2get-stages--api-id<id>## Get routesawsapigatewayv2get-routes--api-id<id>awsapigatewayv2get-route--api-id<id>--route-id<route-id>## Get deploymentsawsapigatewayv2get-deployments--api-id<id>awsapigatewayv2get-deployment--api-id<id>--deployment-id<dep-id>## Get integrationsawsapigatewayv2get-integrations--api-id<id>## Get authorizersawsapigatewayv2get-authorizers--api-id<id>awsapigatewayv2get-authorizer--api-id<id>--authorizer-id<uth-id>## Get domain mappingsawsapigatewayv2get-api-mappings--api-id<id>--domain-name<dom-name>awsapigatewayv2get-api-mapping--api-id<id>--api-mapping-id<map-id>--domain-name<dom-name>## Get modelsawsapigatewayv2get-models--api-id<id>## Call APIhttps://<api-id>.execute-api.<region>.amazonaws.com/<stage>/<resource>