AWS Cognitoを試してみているのですが、アクセストークン(JWT)は1時間で有効期限が切れてしまうのでその都度新しいアクセストークンを取得しなければなりません。

JavaScriptとかではよく事例がみつかるのですがCLIでのやり方は見つかりませんでした。が、公式ドキュメント探したらちゃんとありました。

更新トークンを使用して、ユーザープール API で新しい ID およびアクセストークンを取得するには、AdminInitiateAuth メソッド、または InitiateAuth メソッドを使用します。AuthFlow パラメータに REFRESH_TOKEN_AUTH を渡します。認証パラメータ (AuthParameters) は、キーが「REFRESH_TOKEN」で、値が実際の更新トークンであるキー/値マップです。Amazon Cognito は新しい ID およびアクセストークンを返します

ユーザープールのトークンの使用 更新トークンの使用より

AdminiIntialAuthについてはCLIの公式ドキュメントに書いてあります。後はこれらの情報を基にスクリプトを書くと下記のようになります。

1
2
3
4
5
6
aws cognito-idp admin-initiate-auth \
--user-pool-id <your-user-pool-id> \
--client-id <your-client-id> \
--auth-flow REFRESH_TOKEN_AUTH \
--auth-parameters \
REFRESH_TOKEN=<your-refresh-token>

これを実行すると下記のように更新後のアクセストークンが返ってきます。

1
2
3
4
5
6
7
8
9
{
"ChallengeParameters": {},
"AuthenticationResult": {
"AccessToken": "accessToken",
"ExpiresIn": 3600,
"TokenType": "Bearer",
"IdToken": "idToken"
}
}

おわり。しかし、1時間って開発やってると厳しいのでもっと伸びないんすかね…