BedrockがAPIキーに対応しました。
これまでは、他のAWSサービス同様にアクセスキーやシークレットキー、セッショントークンを使用した認証情報が必要でしたが、これらの代わりに一つのAPIキーでアクセスが可能になります。
OpenAIのAPIやAnthripicのAPIなど、APIキーだけで呼び出せるAPIが多いので、Bedrockでも同様のことができるようになりました。
APIキーの種類
APIキーは、短期間(12時間)だけ使えるものと、長期間(1日以上366,000日、または無期限)使えるものの二種類あり、仕組みが異なっています。
短期APIキーは、キーを生成したIAMロールと同じ権限を持つトークンが発行されます。
長期APIキーは、任意のIAMユーザーを指定して、トークンを発行します。
短期APIキーの発行方法
マネジメントコンソールで作成する他に、専用のライブラリーが用意されています。
Python
Java
JavaScript/TypeScript
長期APIキーの発行方法
長期APIキーは、なんとIAMのAPIで作成します。こんな感じで生成できます。(CloudShellで実行できます)
export IAM_USER_NAME=bedrock-api-user
export NUMBER_OF_DAYS=1
aws iam create-user --user-name ${IAM_USER_NAME}
aws iam attach-user-policy \
--user-name ${IAM_USER_NAME} \
--policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
aws iam create-service-specific-credential \
--user-name ${IAM_USER_NAME} \
--service-name bedrock.amazonaws.com \
--credential-age-days ${NUMBER_OF_DAYS}
{
"ServiceSpecificCredential": {
"CreateDate": "2025-07-10T13:03:12+00:00",
"ExpirationDate": "2025-07-11T13:03:12+00:00",
"ServiceName": "bedrock.amazonaws.com",
"ServiceCredentialAlias": "bedrock-api-user-at-637423213562",
"ServiceCredentialSecret": ...トークン,
"ServiceSpecificCredentialId": "ACCAZI2LCLP5IQSQEZBRM",
"UserName": "bedrock-api-user",
"Status": "Active"
}
}
長期APIキーはリセットできます。
aws iam reset-service-specific-credential \
--service-specific-credential-id ACCAZI2LCLP5IQSQEZBRM \
--user-name ${IAM_USER_NAME}
削除もできます。
aws iam delete-service-specific-credential \
--service-specific-credential-id ACCAZI2LCLP5IQSQEZBRM \
--user-name ${IAM_USER_NAME}
Converse APIを呼んでみる
短期APIキー、長期APIキーともに、環境変数のAWS_BEARER_TOKEN_BEDROCK
にセットするだけで動作します。Boto3が1.39.0以降、APIキーに対応しています。
import boto3
client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")
response = client.converse(modelId="apac.amazon.nova-micro-v1:0", messages=[{"role":"user", "content":[{"text": "hello"}]}])
print(response)
実行
export AWS_BEARER_TOKEN_BEDROCK=.....
python main.py
LangChainで呼んでみる
こちらも環境変数をセットするだけです。内部でBoto3が使われているからだと思います。
from langchain_aws import ChatBedrockConverse
chat_model = ChatBedrockConverse(model="apac.amazon.nova-micro-v1:0", region_name="ap-northeast-1")
result = chat_model.invoke("Hello")
print(result)
APIキーが利用できるのはBedrockとBedrock Runtimeだけの模様
Bedrock AgentやBedrock Agent Runtimeでは使えないので、以下の機能は使え無さそうです。
- エージェント
- ナレッジベース
- フロー
- プロンプト管理
逆に、以下の操作は可能なので、長期APIキーの場合はIAM権限からDenyしておいたほうが安心かもです。
- カスタムモデル
- インポートモデル
- プロビジョンドスループット
Views: 0