type
status
date
slug
summary
tags
category
icon
password
理論
API (Application Programming Interface) とは、アプリやサービス同士がデータや機能をやり取りするための仕組みです。
例えるなら、レストランの「メニュー」のようなものです。お客さん(アプリ)は、メニュー(API)を見て注文し、料理(データや機能)を受け取ります。
特徴
- 他のサービスと簡単に連携可能。
- 内部の仕組みを知らなくても使える。
- 開発効率を上げる。
例
- Google Maps API: アプリで地図を表示。
- Twitter API: ツイートを取得・投稿。
メリット
- 時間短縮。
- 機能の再利用。
以下は Amazon API Gateway の REST API と HTTP API の比較表です。それぞれの特徴を対照的にまとめました。
特徴 | REST API | HTTP API |
利用目的 | フル機能のAPIを構築する用途に適している | シンプルでコスト効率の良いAPIを構築する用途に適している |
コスト | 高い(HTTP APIに比べると) | 低い |
パフォーマンス | HTTP APIに比べて若干遅い | 高速 |
統合オプション | - AWS Lambda
- AWSサービス(直接統合)
- VPCリンク | - AWS Lambda
- VPCリンク |
セキュリティ | AWS IAMカスタム認証ロジックCognitoユーザープール | AWS IAMJWT認証 |
ステージ管理 | 各ステージごとに設定可能 | 簡略化されたステージ管理 |
WebSocketサポート | 非対応 | 非対応 |
リクエスト変換 | 詳細なマッピングテンプレートが使用可能 | 基本的なリクエスト変換のみ |
カスタムドメインのサポート | 対応 | 対応 |
スロットリング | 詳細な設定が可能 | シンプル |
ロギング | CloudWatch Logsで詳細なログを記録可能 | CloudWatch Logsで基本的なログを記録可能 |
ターゲット市場 | 複雑で多機能なAPIを必要とする場合 | シンプルなAPIを必要とする場合 |
選択のポイント
- REST API: 高度な制御や詳細な機能が必要な場合に適しています。
- HTTP API: シンプルなAPIでコスト効率やパフォーマンスを重視する場合に適しています。
違いのまとめ
特徴 | AWS AppConfig | AWS Secrets Manager |
目的 | アプリケーション設定の管理・配信 | 機密情報の安全な保存・管理 |
主な保存対象 | タイムアウト値、機能フラグなど | パスワード、トークン、APIキーなど |
配信機能 | 段階的な設定変更やリアルタイム反映 | 機密情報を安全に配信 |
セキュリティ管理 | 主に設定変更に焦点を当てる | 機密情報の暗号化や自動更新に焦点 |
併用する場合
- AppConfig を使用してアプリケーションの設定を管理し、その設定内で Secrets Manager に保存された機密情報を参照することが可能です。
- 例: AppConfig で「データベース接続を有効化するフラグ」を管理し、接続情報は Secrets Manager で安全に管理する。
実践
参照元:
HTTP API とは
HTTP API は AWS re:Invent 2019 でベータ版が発表され、今年の 3 月に GA となった Amazon API Gateway (以下、 API Gateway) の新機能です。
もともと API Gateway は、 REST API と WebSocket API をサポートしていました。
HTTP API を使用すると、 REST API よりも低レイテンシーおよび低コストで、 RESTful API を作成することができます。
ただし、旧世代の REST API の方が多くの機能を有しているため、単純に HTTP API を選択すれば良い、ということではありません。
HTTP API と REST API の機能の違いは、以下公式ドキュメントをご覧ください。
今回のアップデート
これまでは、 HTTP API では AWS Lambda 関数と任意の HTTP バックエンドにリクエストをルーティングすることができましたが、 AWS サービス統合はサポートされていませんでした。
よって、バックエンドとして他の AWS サービスを利用したい場合は、 AWS Lambda 関数もしくは HTTP バックエンド経由でアクセスすることが必要でした。

今回新たに以下 5 つの AWS サービスとの統合が追加されました。
- AWS AppConfig
- Amazon EventBridge
- Amazon Kinesis Data Streams
- Amazon SQS
- AWS Step Functions
サポートするアクションについては、 公式ドキュメント を参照ください。
今回のアップデートで、 API 経由で直接 AppConfig から設定情報を取得したり、 EventBridge にイベントを発行したり、 Kinesis Data Streams を介してデータを取り込んだり、 SQS にメッセージを送信したり、 Step Functions でワークフローを開始したりすることができるようになりました。

試してみる
では実際に試してみましょう。
今回は AWS AppConfig との統合を確認してみます。
AppConfig と統合することで、設定情報を HTTP API から取得することが可能です。
事前準備
今回のアップデート内容を試すために、以下を事前に作成しておきます。
- AppConfig
- IAM ロール
AppConfig には YouTube API を利用する際の設定情報 (対象プレイリストの ID) を格納しています。
AWS AppConfig と HTTP API を直接統合する方法について、日本語で説明します。以下は、API Gateway を使用して AWS AppConfig から設定データを取得する手順です。
ステップ 1:AWS AppConfig の設定を作成する
- AWS AppConfig でアプリケーションを作成
- AWS 管理コンソールにログインし、AppConfig を開きます。
- 新しいアプリケーション(例:
YouTube-notification-app
)を作成します。 - 環境(例:
dev
)を作成します。 - 設定データをアップロードします。設定データは、S3 や Systems Manager などから取得できます。以下のような JSON データを例として使用します:
ステップ 2:API Gateway HTTP API を作成する
- API Gateway で HTTP API を作成
- AWS 管理コンソールで API Gateway を開きます。
- 新しい HTTP API を作成します(例:
YouTube-notification-api
)。 - 新しい GET ルート(例:
/appconfig
)を作成します。このルートが AWS AppConfig から設定データを取得するエンドポイントになります。
ステップ 3:API Gateway で AppConfig を統合する
- API Gateway で AppConfig を統合
- API Gateway コンソールで Integrations(統合)を選択します。
- AWS Service を選択し、統合タイプとして
AppConfig
を選択します。 - 必要な設定を行います:
- リージョン:AppConfig があるリージョンを選択します。
- サービス:
AppConfig
を選択します。 - アクション:
GetConfiguration
を選択します。 - パラメータ:
Application
:YouTube-notification-app
Environment
:dev
Configuration
:default
ステップ 4:必要な権限の設定
- API Gateway に権限を付与
- API Gateway が AppConfig にアクセスできるように、適切な IAM ロールを作成します。このロールに
appconfig:GetConfiguration
権限を付与します。
ステップ 5:API のデプロイ
- API をデプロイ
- 設定が完了したら、HTTP API を新しいステージ(例:
prod
)にデプロイします。 - デプロイ後、API Gateway によって生成された URL(例:
https://<api-id>.execute-api.<region>.amazonaws.com/appconfig
)を取得します。
ステップ 6:API を呼び出して AppConfig の設定データを取得
- API を使用して設定データを取得
- 以下のように
curl
コマンドを使用して、API Gateway 経由で AppConfig の設定データを取得できます: - レスポンスとして、以下のような設定データが返されます:
まとめ
これで、API Gateway を使用して直接 AWS AppConfig から設定データを取得できるようになります。Lambda を使わずに、HTTP API 経由で AppConfig のデータを取得する方法です。
IAM ロールは HTTP API を作成する際に、 Invocation role で指定します。
今回は、 AppConfig の GetConfiguration を許可するように以下ポリシーにて事前に作成しています。
HTTP API の作成
AWS マネジメントコンソールから API Gateway を開き、 API を作成 ボタンをクリックします。

API タイプは HTTP API を選択しましょう。

API 名に任意の名前を入力。

そのまま進めていきます。

ステージもデフォルト、自動デプロイも有効のまま進めていきます。

作成ボタンをクリックして作成しましょう。

HTTP API ができたので、左ペインから ルート を選びます。

ルートの作成画面で、 Create ボタンをクリック。

今回は
GET
メソッドを選択し /appconfig
パスを入力しました。
ルートが作成されたので、 統合をアタッチする ボタンをクリックしてバックエンドリソースを定義していきましょう。

統合を作成してアタッチ ボタンをクリック。

統合ターゲットに今回追加された各 AWS サービスが存在することがわかります。 今回は AWS AppConfig を選択します。

AWS AppConfig との統合では現在 1 つのアクションのみをサポートしているので、 GetConfiguration を選択しましょう。

GetConfiguration
を指定したので、 設定情報の取得に必要なパラメータ をリクエストからマッピングする設定を行います。 今回はデモなので設定や Client ID を直接指定していますが、 $request.body.Configuration
や $request.body.ClientId
と定義することでリクエスト時に柔軟にパラメータを指定することも可能です。
これで HTTP API の作成は完了です。

API を叩いてみる
実際に作成した HTTP API を実行してみましょう。 指定したパスに対して GET リクエストを送信してみます。
きちんと AppConfig に定義してある設定情報を取得することができました!!

おわりに
API Gateway から他の AWS サービスを利用する際、これまでは AWS Lambda を経由したアクセスが主流でしたが、このように直接他のサービスとの統合が簡単に低コストでできてしまうならこちらを使ったほうがよさそうですね。
ただしまだまだサポートしているサービスおよびアクションも限られているので、今後のアップデートに期待しましょう!
一問道場
質問 #27
トピック 1
ある企業が複数のAmazon DynamoDBテーブルにデータを保存しています。ソリューションアーキテクトは、このデータをHTTPS経由でシンプルなAPIを通じて公開するためのサーバーレスアーキテクチャを使用する必要があります。このソリューションは、需要に応じて自動的にスケールする必要があります。
次のどのソリューションがこれらの要件を満たしますか?(2つ選んでください。)
A. Amazon API Gateway REST APIを作成し、このAPIをAPI GatewayのAWSインテグレーションタイプを使用してDynamoDBへの直接統合で構成します。
B. Amazon API Gateway HTTP APIを作成し、このAPIをAPI GatewayのAWSインテグレーションタイプを使用してDynamoDBへの直接統合で構成します。
C. Amazon API Gateway HTTP APIを作成し、このAPIをAWS Lambda関数への統合で構成し、DynamoDBテーブルからデータを返します。
D. AWS Global Acceleratorでアクセラレータを作成し、このアクセラレータをAWS Lambda@Edge関数の統合で構成して、DynamoDBテーブルからデータを返します。
E. Network Load Balancerを作成し、リスナールールを設定して、リクエストを適切なAWS Lambda関数に転送します。
解説
この問題では、以下の要件を満たすソリューションを選ぶ必要があります:
- シンプルなAPIを提供。
- HTTPS経由でアクセス可能。
- サーバーレスアーキテクチャを使用。
- 需要に応じて自動スケールする。
以下、それぞれの選択肢について検討します。
選択肢 A
Amazon API Gateway REST APIを作成し、このAPIをAPI GatewayのAWSインテグレーションタイプを使用してDynamoDBへの直接統合で構成します。
- API Gateway REST APIはDynamoDBと直接統合でき、サーバーレスでシンプルなAPIを構築可能です。
- REST APIは需要に応じて自動スケールするため、この要件にも適合しています。
適切です。
選択肢 B
Amazon API Gateway HTTP APIを作成し、このAPIをAPI GatewayのAWSインテグレーションタイプを使用してDynamoDBへの直接統合で構成します。
- HTTP APIはコスト効率が高いですが、DynamoDBとの直接統合をサポートしていません。
- DynamoDBにアクセスする場合、AWS Lambdaなどを使用する必要があります。
不適切です。
選択肢 C
Amazon API Gateway HTTP APIを作成し、このAPIをAWS Lambda関数への統合で構成し、DynamoDBテーブルからデータを返します。
- HTTP APIはシンプルでコスト効率が高く、AWS Lambdaを統合することでDynamoDBへのアクセスが可能です。
- サーバーレスであり、需要に応じてスケールするため、要件を満たします。
適切です。
選択肢 D
AWS Global Acceleratorでアクセラレータを作成し、このアクセラレータをAWS Lambda@Edge関数の統合で構成して、DynamoDBテーブルからデータを返します。
- AWS Global Acceleratorはネットワークパフォーマンスの最適化が主な用途であり、APIの構築には適していません。
- また、Lambda@Edgeは通常、CloudFrontと連携してエッジでコードを実行する用途に使用されます。
不適切です。
選択肢 E
Network Load Balancerを作成し、リスナールールを設定して、リクエストを適切なAWS Lambda関数に転送します。
- Network Load Balancerはレイテンシーの低いネットワークトラフィックのルーティングが主な用途で、HTTPSベースのAPIには不適切です。
- サーバーレスアーキテクチャの一部として利用されることは一般的ではありません。
不適切です。
結論
正しい選択肢は A と C です。
これらの選択肢は以下の理由で要件を満たします:
- サーバーレスアーキテクチャで構築可能。
- シンプルなAPIを提供。
- 自動スケールに対応。
- HTTPSでアクセス可能。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/164d7ae8-88e2-806b-9804-d5f4d3cba4bf
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章