原文(日本語に翻訳)
Bedrockのクレデンシャルキャッシュを改善しました。awsCredentialExport から取得したクレデンシャルは、従来の固定1時間ではなく、その Expiration(有効期限)までキャッシュされるようになりました。
原文(英語)
Improved Bedrock credential caching: credentials from awsCredentialExport are now cached until their Expiration instead of a fixed 1 hour
概要
Amazon Bedrock経由でClaude Codeを利用する際、awsCredentialExport で取得した一時クレデンシャルのキャッシュ方法が改善されました。これまでは取得後一律1時間でキャッシュが切れていましたが、クレデンシャルに含まれる Expiration の値を尊重してキャッシュするようになりました。これにより、有効期限が1時間より長いクレデンシャルでは不要な再取得が減り、逆に1時間より短いクレデンシャルでは期限切れによる認証エラーを防げます。
基本的な使い方
awsCredentialExport は、AWS Bedrockのクレデンシャルを外部スクリプトから動的に取得するための設定です。設定ファイルにクレデンシャル取得コマンドを指定します。
{
"awsCredentialExport": "/path/to/get-credentials.sh"
}指定したスクリプトは、AccessKeyId、SecretAccessKey、SessionToken、そして Expiration を含むJSONを出力します。今回の改善により、この Expiration までキャッシュが利用されます。
実践例
有効期限を含むクレデンシャルを返すスクリプト
クレデンシャル取得スクリプトが Expiration を返すことで、Claude Codeはその期限までキャッシュを再利用します。
#!/bin/bash
# get-credentials.sh
aws sts assume-role \
--role-arn "arn:aws:iam::123456789012:role/BedrockRole" \
--role-session-name "claude-code" \
--query 'Credentials' \
--output jsonaws sts assume-role の出力には Expiration が含まれるため、その時刻までキャッシュが有効になります。
短命なクレデンシャルでの認証エラー回避
有効期限が1時間未満のクレデンシャルを使う環境では、従来は固定1時間キャッシュにより期限切れのクレデンシャルを使い続けて認証エラーになることがありました。今回の改善で Expiration を尊重するため、こうしたエラーが減ります。
注意点
- この改善の恩恵を受けるには、
awsCredentialExportで実行するスクリプトがExpirationフィールドを正しく出力している必要があります。 aws sts assume-roleやaws sts get-session-tokenの標準出力にはExpirationが含まれます。- クレデンシャルキャッシュは有効期限まで再利用されるため、ロールやポリシーを変更した際は期限切れまで反映されない場合があります。