web-dev-qa-db-ja.com

AWS API Gateway:IAM IDをLambda関数に渡す方法は?

AWS API Gatewayフロントエンドを使用してLambda関数へのIAM認証アクセスを正常に構成しましたが、IAMユーザーIDをLambda関数に渡す方法が見つかりません。

正確にIAMユーザーIDが必要であり、IAMユーザー資格情報の呼び出しでLambda関数を実行できません。必要なのは、Lambda関数でIAMユーザーIDを呼び出すことだけです。

そのためのオプションはありますか?

16
AlexeyVMP

Amazon API Gateway リクエストコンテキストからのIDおよびその他の情報へのアクセスのサポートは、質問を投稿したときには利用できませんでしたが、最近追加されました。 お知らせ:コンテキスト変数 :を参照してください。

マッピングテンプレート内から コンテキスト変数 にアクセスして、API呼び出しに関するコンテキスト情報を取得できるようになりました。ステージ、リソースパス、HTTPメソッドなどのデータに加えて、呼び出し元のIDに関する情報にアクセスできます。この情報は、$ context変数を使用してバックエンド統合に渡すことができます。 [強調鉱山]

$ context変数へのアクセス に関する参照ドキュメントには、$context Variable Referenceがあり、ユースケースに対応するさまざまな$context.identity.*パラメーターがあります。

コグニートアイデンティティ

同様のOPに対するSoenkeの回答で概説されているように Amazon API Gatewayフォーラムでの質問 、まだ文書化されていない 統合 パラメーターがあり、その結果、Cognito識別子がこれに含まれます$context.identity.*コンテキスト変数:

lambdaでCognito(IAMではありません!)IdentityIdとIdentityPoolIdを使用できるようにするには、APIGWリソースのAPIGatewayの[IntegrationRequest]ページで[Invokewithcallercredentials]を有効にする必要があります。これにより、新しいコンテキスト構造体「identity」(Lambda関数に渡される「cognitoIdentityId」と「cognitoIdentityPoolId」を含む)が生成されます。

8
Steffen Opel

あなたはそれを必要としません。すべてのLambda関数は、実行時に必要なすべてのアクセス許可を付与する独自のIAM Roleを持つことができます。つまり、Lambda関数に、その操作を実行するために必要となる可能性のあるすべての権限を付与できます。次にAWS SDKを使用すると、これらの資格情報が自動的に取得されます。

このスライド22を参照してください AWS API Gatewayプレゼンテーション

0
kixorz