Amazon Web Services ブログ

[AWS Black Belt Online Seminar] Amazon API Gateway 資料及び QA 公開

先日 (2019/5/14) 開催しました AWS Black Belt Online Seminar「Amazon API Gateway」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます)

Q. API GatewayかLambdaのどちらかの採用を検討するにはどのようにしたらいいでしょうか (とくにコスト面で)

A. Web APIとして公開する場合は、AWS Lambdaの手前にAmazon API Gatewayを配置することによって疎結合化がなされ、実装を隠蔽化できるという利点があります。
ただシンプルにAWS SDK等を利用し直接Lambdaを呼び出したいケースであれば、必要な権限を呼び出し元のアプリケーションに付与した上でLambdaのみを利用する構成もご検討頂けます。
(例:呼び出し元がAmazon Elastic Compute Cloud (EC2) であればそのIAMロール、呼び出し元がブラウザやモバイルアプリであれば、Amazon CognitoのIDプールを利用したAWS Credentialsを利用)。
また、Lambda関数をバックエンドとしてHTTPリクエストを受け付ける他の方法としては、Elastic Load Balancing (ELB) の一種である Application Load Balancer (ALB) を利用する方法もあります (参照:Amazon Web Services ブログ 「アプリケーションロードバランサー(ALB)のターゲットにAWS Lambdaが選択可能になりました」)

Q. ユーザーごとに異なるクライアント証明書はできますか?

A. Amazon API Gatewayがご提供する「クライアント証明書」の機能は、ユーザー(エンドユーザー、ブラウザー)を特定するものではなく、Amazon API Gateway自身がクライアントとして統合バックエンド先にアクセスする際のクライアント証明のための機能です。そのため、エンドユーザー毎に異なるクライアント証明書を用意することはできません。認証メカニズムによる認証と識別をご利用下さい。

Q. API Gatewayで認証は容易に行えることはわかりました。バックエンドのLambdaでアクセスしてきたユーザーが誰なのかを判断するにはどうすればよいでしょうか。

A. コンテキスト情報の値を利用頂くことが基本的な考え方となります。お使いの認証方式によって、具体的なセットされる値は変化しますので、こちらをご覧下さい。
・IAMアクセス権限(AWS IAM):
コンテキスト情報内 identity.caller に「リクエストを実行している発信者のプリンシパル ID」がセットされています。
・Lambdaオーソライザー利用時:
Lambdaオーソライザーで、利用可能なコンテキストオブジェクトにkey-vaueデータをセットすることで、Lambda関数にコンテキスト情報が引き継がれます。Lambdaオーソライザーの設定で “Lambda イベントペイロード” を 「リクエスト」 に設定すると、クライアントのHTTPリクエストデータ(HTTPヘッダーやHTTPリクエストパラメータなどを含む)が渡されるため、それらの値を取得して独自の認証処理の結果の値をコンテキストにセットし、統合バックエンドのLambda関数へ引き渡すことが可能です。
・Cognitoオーソライザー利用時:
リクエストが Amazon Cognito 認証情報で署名されている場合、コンテキスト情報内 identity. cognitoIdentityIdに「リクエストを実行している発信者の Amazon Cognito アイデンティティ ID」がセットされています。
・補足:APIキーを併用する:
クライアントアプリケーションのような単位で識別する用途であれば、APIキーの併用を行い、APIキーをアクセス元の識別に利用することも可能です。但し、APIキーはあくまで「認証」を目的としたものではございませんので、留意ください。

今後の AWS Webinar | イベントスケジュール

直近で以下を予定しています。各詳細およびお申し込み先は下記URLからご確認いただけます。皆様のご参加をお待ちしております。

世界最大の AWS Summit を今年は幕張で開催!クラウドの最新技術を “楽しんで学べる” 3 日間。

AWS Summit Tokyo 2019 年 6 月 12 日 (水) ~ 6 月 14 日 (金) ≫ 申込先
AWS Summit Osaka  2019 年 6 月 27 日 (木) ≫ 申込先

AWS Black Belt Online Seminar 5月分申込先 ≫
AWS Black Belt Online Seminar 6月分申込先 ≫

AWS Step Functions | 2019 年 5 月 22 日 (水) | 18:00 – 19:00
Let’s dive deep into AWS Lambda Part4 | 2019 年 5 月 28 日 (火) | 12:00 – 13:00
AWSトレーニング | 2019 年 5 月 29 日 (水) | 18:00 – 19:00
Amazon Simple Notification Service (SNS) | 2019 年 6 月 4 日 | 12:00 – 13:00
AWS Config | 2019 年 6 月 18 日 | 12:00 – 13:00
Dive deep into AWS Chalice | 2019 年 6 月 19 日 | 18:00 – 19:00

Happy Coding Dojo 申込先 ≫
2019 年 6 月 5 日 (水) | 18:00 – 19:00
クラウドアプリケーション開発を実践中、またはこれから取り組む予定のデベロッパーの方が対象となる、ウェブ開発、プログラミング、モバイル、AWSにフォーカスしたオンラインセミナーです。視聴者の皆様からテーマを募集中です!こちらから聞きたいテーマをリクエストしてください。