0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API Gatewayを利用してLambdaを叩くcurlコマンドは? ただし、AssumeRoleと、Cognito認証が必要

Posted at

前提条件
Cognito認証: ユーザーはCognito User Poolを介して認証され、Cognito Identity Poolを使用してAWSリソースにアクセスします。
AssumeRole: Cognito Identity Poolを通じて取得した一時的な認証情報を使って、指定されたIAMロールにAssumeRoleします。
API Gateway: Lambda関数に連携されたAPI Gatewayエンドポイントが設定されています。
手順

  1. CognitoでIDトークンを取得
    まず、Cognito User Poolでユーザーが認証されると、IDトークン(JWT)を取得します。

bash
Copy code
aws cognito-idp initiate-auth
--client-id
--auth-flow USER_PASSWORD_AUTH
--auth-parameters USERNAME=,PASSWORD=
: Cognito User Poolで設定されたアプリクライアントID
: Cognitoユーザー名
: Cognitoユーザーパスワード
レスポンスにはIdTokenが含まれています。

  1. Cognito Identity Poolから一時的な認証情報を取得
    次に、取得したIDトークンを使って、Cognito Identity Poolから一時的な認証情報を取得します。

bash
Copy code
aws cognito-identity get-id
--identity-pool-id
--logins cognito-idp..amazonaws.com/=
: Cognito Identity PoolのID
: Cognito Identity Poolが存在するリージョン
: Cognito User PoolのID
: 先ほど取得したIDトークン
次に、一時的なAWS認証情報を取得します。

bash
Copy code
aws cognito-identity get-credentials-for-identity
--identity-id
--logins cognito-idp..amazonaws.com/=
レスポンスにはAccessKeyId、SecretKey、SessionTokenが含まれています。

  1. AssumeRoleを実行
    取得した一時的な認証情報を使ってAssumeRoleします。

bash
Copy code
aws sts assume-role
--role-arn
--role-session-name
--duration-seconds 900
--credentials
--access-key
--secret-key
--session-token
: AssumeRoleするIAMロールのARN
: 任意のセッション名
, , : 取得した一時的な認証情報
レスポンスには新しい一時的なAccessKeyId、SecretKey、SessionTokenが含まれています。

  1. 署名付きリクエストを作成してAPI Gatewayを呼び出す
    新しい一時的な認証情報を使って、API Gatewayに署名付きリクエストを送信します。

bash
Copy code
curl -X POST https://your-api-id.execute-api.your-region.amazonaws.com/your-stage/your-resource
-H "Authorization: Bearer "
-H "Content-Type: application/json"
-d '{"key1":"value1", "key2":"value2"}'
--aws-sigv4 "aws:amz:us-west-2:apigateway"
--aws-access-key
--aws-secret-key
--aws-session-token
, , , : API Gatewayの設定
: Cognitoで取得したIDトークン
, , : AssumeRole後に取得した一時的な認証情報
これにより、AssumeRoleとCognito認証を経由して、API Gatewayを介してLambdaを呼び出すことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?