日曜日, 7月 13, 2025
日曜日, 7月 13, 2025
- Advertisment -
ホームニューステックニュースBedrockのAPIキーについての諸々 #AWS - Qiita

BedrockのAPIキーについての諸々 #AWS – Qiita



BedrockのAPIキーについての諸々 #AWS - Qiita

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しておいたほうが安心かもです。

  • カスタムモデル
  • インポートモデル
  • プロビジョンドスループット





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -