AWS API Gatewayは、開発者が大規模にAPIを作成、公開、監視するために設計された、Amazon Web Services(AWS)が提供する包括的なサービスです。これはアプリケーションへのエントリーポイントとして機能し、開発者がルールと手順のフレームワークを確立することを許可します。このフレームワークは、外部ユーザーがアプリケーション内の特定のデータや機能にアクセスする方法を管理します。
API Gatewayは、APIへのリクエストがどのように処理されるべきかを定義することを可能にし、特定のメソッド(例:GET、POST、PUT、DELETE)とリソースを持つカスタムAPIエンドポイントを作成できます。また、開発者がアプリケーションからAPIを呼び出しやすくするためのクライアントSDK(ソフトウェア開発キット)を生成することもできます。
リソース: 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-domain-namesawsapigatewayv2get-domain-name--domain-name<name>awsapigatewayv2get-vpc-links# 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>
API Gateway エンドポイントにアクセスするための異なる認証
リソースポリシー
リソースポリシーを使用して、誰が API エンドポイントを呼び出すことができるかを定義することが可能です。
以下の例では、指定された IP は GET を介してエンドポイント /resource_policy を呼び出すことができません。
IAM 認証
パス内のメソッド(リソース)が呼び出すために IAM 認証を必要とするように設定することが可能です。