AWS API Gatewayフロントエンドを使用してLambda関数へのIAM認証アクセスを正常に構成しましたが、IAMユーザーIDをLambda関数に渡す方法が見つかりません。
正確にIAMユーザーIDが必要であり、IAMユーザー資格情報の呼び出しでLambda関数を実行できません。必要なのは、Lambda関数でIAMユーザーIDを呼び出すことだけです。
そのためのオプションはありますか?
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」を含む)が生成されます。
あなたはそれを必要としません。すべてのLambda
関数は、実行時に必要なすべてのアクセス許可を付与する独自のIAM Role
を持つことができます。つまり、Lambda
関数に、その操作を実行するために必要となる可能性のあるすべての権限を付与できます。次にAWS SDK
を使用すると、これらの資格情報が自動的に取得されます。
このスライド22を参照してください AWS API Gatewayプレゼンテーション 。