type
status
date
slug
summary
tags
category
icon
password
 

理論

API (Application Programming Interface) とは、アプリやサービス同士がデータや機能をやり取りするための仕組みです。
例えるなら、レストランの「メニュー」のようなものです。お客さん(アプリ)は、メニュー(API)を見て注文し、料理(データや機能)を受け取ります。

特徴

  • 他のサービスと簡単に連携可能。
  • 内部の仕組みを知らなくても使える。
  • 開発効率を上げる。

  • Google Maps API: アプリで地図を表示。
  • Twitter API: ツイートを取得・投稿。

メリット

  • 時間短縮。
  • 機能の再利用。
 
以下は Amazon API Gateway の REST APIHTTP 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 バックエンド経由でアクセスすることが必要でした。
notion image
今回新たに以下 5 つの AWS サービスとの統合が追加されました。
  • AWS AppConfig
  • Amazon EventBridge
  • Amazon Kinesis Data Streams
  • Amazon SQS
  • AWS Step Functions
サポートするアクションについては、 公式ドキュメント を参照ください。
今回のアップデートで、 API 経由で直接 AppConfig から設定情報を取得したり、 EventBridge にイベントを発行したり、 Kinesis Data Streams を介してデータを取り込んだり、 SQS にメッセージを送信したり、 Step Functions でワークフローを開始したりすることができるようになりました。
notion image

試してみる

では実際に試してみましょう。
今回は AWS AppConfig との統合を確認してみます。
AppConfig と統合することで、設定情報を HTTP API から取得することが可能です。

事前準備

今回のアップデート内容を試すために、以下を事前に作成しておきます。
  • AppConfig
  • IAM ロール
AppConfig には YouTube API を利用する際の設定情報 (対象プレイリストの ID) を格納しています。
AWS AppConfig と HTTP API を直接統合する方法について、日本語で説明します。以下は、API Gateway を使用して AWS AppConfig から設定データを取得する手順です。

ステップ 1:AWS AppConfig の設定を作成する

  1. AWS AppConfig でアプリケーションを作成
      • AWS 管理コンソールにログインし、AppConfig を開きます。
      • 新しいアプリケーション(例:YouTube-notification-app)を作成します。
      • 環境(例:dev)を作成します。
      • 設定データをアップロードします。設定データは、S3 や Systems Manager などから取得できます。以下のような JSON データを例として使用します:

    ステップ 2:API Gateway HTTP API を作成する

    1. API Gateway で HTTP API を作成
        • AWS 管理コンソールで API Gateway を開きます。
        • 新しい HTTP API を作成します(例:YouTube-notification-api)。
        • 新しい GET ルート(例:/appconfig)を作成します。このルートが AWS AppConfig から設定データを取得するエンドポイントになります。

    ステップ 3:API Gateway で AppConfig を統合する

    1. API Gateway で AppConfig を統合
        • API Gateway コンソールで Integrations(統合)を選択します。
        • AWS Service を選択し、統合タイプとして AppConfig を選択します。
        • 必要な設定を行います:
          • リージョン:AppConfig があるリージョンを選択します。
          • サービスAppConfig を選択します。
          • アクションGetConfiguration を選択します。
          • パラメータ
            • ApplicationYouTube-notification-app
            • Environmentdev
            • Configurationdefault

    ステップ 4:必要な権限の設定

    1. API Gateway に権限を付与
        • API Gateway が AppConfig にアクセスできるように、適切な IAM ロールを作成します。このロールに appconfig:GetConfiguration 権限を付与します。

    ステップ 5:API のデプロイ

    1. API をデプロイ
        • 設定が完了したら、HTTP API を新しいステージ(例:prod)にデプロイします。
        • デプロイ後、API Gateway によって生成された URL(例:https://<api-id>.execute-api.<region>.amazonaws.com/appconfig)を取得します。

    ステップ 6:API を呼び出して AppConfig の設定データを取得

    1. 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 を作成 ボタンをクリックします。
        notion image
        API タイプは HTTP API を選択しましょう。
        notion image
        API 名に任意の名前を入力。
        notion image
        そのまま進めていきます。
        notion image
        ステージもデフォルト、自動デプロイも有効のまま進めていきます。
        notion image
        作成ボタンをクリックして作成しましょう。
        notion image
        HTTP API ができたので、左ペインから ルート を選びます。
        notion image
        ルートの作成画面で、 Create ボタンをクリック。
        notion image
        今回は GET メソッドを選択し /appconfig パスを入力しました。
        notion image
        ルートが作成されたので、 統合をアタッチする ボタンをクリックしてバックエンドリソースを定義していきましょう。
        notion image
        統合を作成してアタッチ ボタンをクリック。
        notion image
        統合ターゲットに今回追加された各 AWS サービスが存在することがわかります。 今回は AWS AppConfig を選択します。
        notion image
        AWS AppConfig との統合では現在 1 つのアクションのみをサポートしているので、 GetConfiguration を選択しましょう。
        notion image
        GetConfiguration を指定したので、 設定情報の取得に必要なパラメータ をリクエストからマッピングする設定を行います。 今回はデモなので設定や Client ID を直接指定していますが、 $request.body.Configuration や $request.body.ClientId と定義することでリクエスト時に柔軟にパラメータを指定することも可能です。
        notion image
        これで HTTP API の作成は完了です。
        notion image

        API を叩いてみる

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

        おわりに

        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関数に転送します。
         
        解説
        この問題では、以下の要件を満たすソリューションを選ぶ必要があります:
        1. シンプルなAPIを提供。
        1. HTTPS経由でアクセス可能。
        1. サーバーレスアーキテクチャを使用。
        1. 需要に応じて自動スケールする。
        以下、それぞれの選択肢について検討します。

        選択肢 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には不適切です。
        • サーバーレスアーキテクチャの一部として利用されることは一般的ではありません。
        不適切です。

        結論

        正しい選択肢は AC です。
        これらの選択肢は以下の理由で要件を満たします:
        • サーバーレスアーキテクチャで構築可能。
        • シンプルなAPIを提供。
        • 自動スケールに対応。
        • HTTPSでアクセス可能。
         
         
        相关文章
        クラウド技術の共有 | AWS Site-to-Site
        Lazy loaded image
        EKSでのWordPressデプロイ:KCNA-JP試験対策 (Kubernetes実践編)
        Lazy loaded image
        初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)
        Lazy loaded image
        EFSを活用!AWS EC2でDockerを使ったWordPressサイト構築
        Lazy loaded image
        529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
        Lazy loaded image
        528-AWS SAP AWS 「理論・実践・一問道場」Migration Evaluator
        Lazy loaded image
        028-AWS SAP AWS 「理論・実践・一問道場」URL にリダイレクト026-AWS SAP AWS 「理論・実践・一問道場」Secrets Manager
        Loading...
        みなみ
        みなみ
        一个普通的干饭人🍚
        最新发布
        02-生成AIパスポート試験対策:第2章「生成AI」
        2025-2-1
        01-生成AIパスポート試験対策:第1章「人口知能」
        2025-2-1
        究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
        2025-1-27
        不要再傻傻的直接买NISA啦
        2025-1-27
        Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
        2025-1-24
        529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
        2025-1-22
        公告
        🎉欢迎访问我的博客🎉
        - 感谢您的支持 --
        本站点于2024/09/01建立
        👏主要分享IT相关主题👏
        系统管理:
        Redhat…
        容器和编排:
        Kubernetes、Openshift…
        云计算:
        AWS、IBM…
        AI入门
        以及技术笔记和考证经验
        定期更新,欢迎互动。
        感谢访问!
        快速浏览相关标签