Amazon Bedrock API キーを生成する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Bedrock API キーを生成する

Amazon Bedrock API キーは、 AWS Management Console または AWS API を使用して生成できます。を使用して AWS Management Console 、いくつかのステップで Amazon Bedrock API キーを簡単に生成することをお勧めします。

警告

Amazon Bedrock の探索には、Amazon Bedrock API キーの使用を制限することを強くお勧めします。セキュリティ要件が高いアプリケーションに Amazon Bedrock を組み込む準備ができたら、短期認証情報に切り替える必要があります。詳細については、IAM ユーザーガイドの「長期アクセスキーの代替」を参照してください。

コンソールを使用して Amazon Bedrock API キーを生成する

コンソールを使用して Amazon Bedrock API キーを生成するには、次の手順を実行します。

  1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS Management Console を使用して にサインインします。次に、https://console.aws.amazon.com/bedrock で Amazon Bedrock コンソールを開きます。

  2. 左側のナビゲーションペインで、API キーを選択します。

  3. 次のいずれかのタイプのキーを生成します。

    • 短期 API キー短期 API キータブで、短期 API キーの生成を選択します。キーは、コンソールセッションの有効期限が切れる (12 時間以内) と期限切れになり、生成 AWS リージョン 元の を呼び出すことができます。リージョンは、生成されたキーで直接変更できます。

    • 長期 API キー長期 API キータブで、長期 API キーの生成を選択します。

      1. API キーの有効期限セクションで、キーの有効期限が切れるまでの時間を選択します。

      2. (オプション) デフォルトでは、コア Amazon Bedrock API オペレーションへのアクセスを許可する AmazonBedrockLimitedAccess AWS管理ポリシーは、キーに関連付けられた IAM ユーザーにアタッチされます。ユーザーにアタッチするポリシーをさらに選択するには、高度なアクセス許可セクションを展開し、追加するポリシーを選択します。

      3. [Generate] (生成) を選択します。

      警告

      Amazon Bedrock の探索には、Amazon Bedrock API キーの使用を制限することを強くお勧めします。セキュリティ要件が高いアプリケーションに Amazon Bedrock を組み込む準備ができたら、短期認証情報に切り替える必要があります。詳細については、IAM ユーザーガイドの「長期アクセスキーの代替」を参照してください。

API を使用して長期的な Amazon Bedrock API キーを生成する

API で長期的な Amazon Bedrock API キーを作成する一般的な手順は次のとおりです。

  1. IAM エンドポイントで CreateUser リクエストを送信して、IAM ユーザーを作成します。 https://docs.aws.amazon.com/general/latest/gr/iam-service.html

  2. IAM エンドポイントで AttachUserPolicy リクエストを送信して、AmazonBedrockLimitedAccess を IAM ユーザーにアタッチします。 https://docs.aws.amazon.com/general/latest/gr/iam-service.htmlこのステップを繰り返して、必要に応じて他の管理ポリシーまたはカスタムポリシーをユーザーにアタッチできます。

    注記

    セキュリティのベストプラクティスとして、IAM ユーザーに IAM ポリシーをアタッチして、Amazon Bedrock API キーの使用を制限することを強くお勧めします。時間制限ポリシーの例とキーを使用できる IP アドレスの制限については、「インラインポリシーを IAM ユーザーにアタッチしてアクセスキーの使用を制御する」を参照してください。

  3. IAM エンドポイントCreateServiceSpecificCredential リクエストを送信し、 を bedrock.amazonaws.comとして指定して、長期的な Amazon Bedrock API キーを生成しますServiceName

    • レスポンスでServiceApiKeyValue返される は、長期的な Amazon Bedrock API キーです。

    • レスポンスでServiceSpecificCredentialId返された を使用して、キーに関連する API オペレーションを実行できます。

長期 Amazon Bedrock API キーを生成する方法については、任意の方法のタブを選択し、手順に従います。

CLI

長期 Amazon Bedrock API キーを作成するには、 AWS Identity and Access Management API オペレーションを使用します。まず、前提条件を満たしていることを確認します。

前提条件

設定により、 が AWS 認証情報を自動的に認識 AWS CLI できることを確認します。詳細については、「 の設定の構成 AWS CLI」を参照してください。

ターミナルを開き、次のコマンドを実行します。

  1. IAM ユーザーを作成します。名前を任意の名前に置き換えることができます。

    aws iam create-user --user-name bedrock-api-user
  2. AmazonBedrockLimitedAccess をユーザーにアタッチします。API キーに追加する他の AWS管理ポリシーまたはカスタムポリシーの ARNs を使用して、このステップを繰り返すことができます。

    aws iam attach-user-policy --user-name bedrock-api-user --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
  3. 長期 Amazon Bedrock API キーを作成し、${NUMBER-OF-DAYS} をキーの存続日数に置き換えます。

    aws iam create-service-specific-credential \ --user-name bedrock-api-user \ --service-name bedrock.amazonaws.com \ --credential-age-days ${NUMBER-OF-DAYS}
Python

長期 Amazon Bedrock API キーを作成するには、 AWS Identity and Access Management API オペレーションを使用します。まず、前提条件を満たしていることを確認します。

前提条件

セットアップにより、Python が AWS 認証情報を自動的に認識できることを確認します。詳細については、「 の設定の構成 AWS CLI」を参照してください。

次のスクリプトを実行して、IAM ユーザーを作成し、Amazon Bedrock アクションを実行するためのアクセス許可をアタッチし、ユーザーに関連付ける長期的な Amazon Bedrock API キーを生成します。

import boto3 from datetime import datetime, timedelta # Replace with name for your IAM user username = "bedrock-api-user" # Add any AWS-managed or custom policies that you want to the user bedrock_policies = [ "arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess", # Limited access # "arn:aws:iam::aws:policy/AmazonBedrockMarketplaceAccess", # Optional: Access to Amazon Bedrock Marketplace actions ] # Set the key expiration time to a number of your choice expiration_time_in_days = 30 iam_client = boto3.client("iam") # Create IAM user user = iam_client.create_iam_user(username) # Attach policies to user for policy_arn in bedrock_policies: iam_client.attach_managed_policy(username, policy_arn) # Create long-term Amazon Bedrock API key and return it service_credentials = iam_client.create_service_specific_credential( user_name=username, service_name="bedrock", credential_age_days=expiration_time_in_days ) api_key = service_credentials["ServiceApiKeyValue"] print(api_key)

クライアントライブラリを使用して短期 Amazon Bedrock API キーを生成する

短期キーには次のプロパティがあります。

  • 次の値のうち短い方に有効です。

    • 12 時間ごと

    • キーの生成に使用される IAM プリンシパルによって生成されたセッションの期間。

  • キーの生成に使用されるプリンシパルにアタッチされたアクセス許可を継承します。

  • 生成元の AWS リージョンでのみ使用できます。

長時間実行されるアプリケーションの場合、aws-bedrock-token-generator クライアントライブラリは、認証情報の更新時に必要に応じて新しい Amazon Bedrock 短期 API キーを作成できます。詳細については、「短期 Amazon Bedrock API キーの自動更新を設定する」を参照してください。

前提条件
  • キーの生成に使用する IAM プリンシパルが、Amazon Bedrock を使用するための適切なアクセス許可で設定されていることを確認します。実験のために、 AWS管理の AmazonBedrockLimitedAccess ポリシーをプリンシパルにアタッチできます。認証情報の保護については、IAM のセキュリティのベストプラクティスを参照してください。

  • セットアップにより、Python が AWS 認証情報を自動的に認識できることを確認します。認証情報を取得するデフォルトの方法は、定義された階層に従います。特定の SDK またはツールの階層は、AWS SDKs標準化された認証情報プロバイダーで確認できます。

  • Amazon Bedrock トークンジェネレーターをインストールします。任意の方法のタブを選択し、ステップに従います。

Python

ターミナルを開き、次のコマンドを実行します。

pip install aws-bedrock-token-generator
Javascript

ターミナルを開き、次のコマンドを実行します。

npm install @aws/bedrock-token-generator
Java

Maven を使用する場合は、次の依存関係を に追加しますpom.xml

<dependency> <groupId>software.amazon.bedrock</groupId> <artifactId>aws-bedrock-token-generator</artifactId> <version>1.1.0</version> </dependency>

Gradle を使用する場合は、 に以下を追加しますbuild.gradle

implementation 'software.amazon.bedrock:aws-bedrock-token-generator:1.1.0'

トークンジェネレーターを使用して、デフォルトの認証情報を持つ短期 Amazon Bedrock API キーを異なる言語で生成する例を確認するには、任意の方法のタブを選択し、ステップに従います。

Python
from aws_bedrock_token_generator import provide_token token = provide_token() print(f"Token: {token}")
Javascript
import { getTokenProvider } from "@aws/bedrock-token-generator"; // Create a token provider that uses default credentials and region providers. // You can configure it to use other credential providers. const provideToken = getTokenProvider(); async function example() { const token = await provideToken(); // Use the token for API calls. The token has a default expiration of 12 hour. // If the expiresInSeconds parameter is specified during token creation, the // expiration can be configured up to a maximum of 12 hours. However, the actual // token validity period will always be the minimum of the requested expiration // time and the AWS credentials' expiry time console.log(`Bearer Token: ${token}`); }
Java
import software.amazon.bedrock.token.BedrockTokenGenerator; // Credentials and region will be picked up from the default provider chain BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build(); tokenGenerator.getToken();

トークンの生成時のさまざまなユースケースのその他の例については、次のリンクを参照してください。

短期 Amazon Bedrock API キーの自動更新を設定する

aws-bedrock-token-generator パッケージを使用してスクリプトを作成し、現在の短期キーの有効期限が切れるたびにプログラムで新しい短期キーを再生成できます。まず、「」の前提条件を満たしていることを確認しますクライアントライブラリを使用して短期 Amazon Bedrock API キーを生成する。トークンを取得して Converse リクエストを行うスクリプトの例を表示するには、任意のメソッドのタブを選択し、ステップに従います。

Python
from aws_bedrock_token_generator import provide_token import requests def get_new_token(): url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse" payload = { "messages": [ { "role": "user", "content": [{"text": "Hello"}] } ] } # Create a token provider that uses default credentials and region providers. # You can configure it to use other credential providers. # https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md # It can be used for each API call as it is inexpensive. token = provide_token() headers = { "Content-Type": "application/json", "Authorization": f"Bearer {token}" } response = requests.post(url, headers=headers, json=payload) print(response.json()) if __name__ == "__main__": get_new_token()
Javascript
import { getTokenProvider } from "@aws/bedrock-token-generator"; // Create a token provider that uses default credentials and region providers. // You can configure it to use other credential providers. // https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md // This can be created just once. Use await provideToken() to fetch the token const provideToken = getTokenProvider(); async function example() { const url = "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse"; const payload = { messages: [ { role: "user", content: [{ text: "Hello" }] } ] }; const headers = { "Content-Type": "application/json", // provideToken retrieves a valid token. It can be used for each API call as it is inexpensive. "Authorization": `Bearer ${await provideToken()}` }; await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(payload) }) }
Java
package com.amazon.bedrocktoken; import software.amazon.bedrock.token.BedrockTokenGenerator; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class GetNewToken { public static void main(String[] args) throws Exception { // Use default credentials and region from environment/profile chain // Create a token generator that uses default credentials and region providers. // You can configure it to use other credential providers. // https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build(); // getToken() retrieves a valid token. It can be used for each API call as it is inexpensive. String token = tokenGenerator.getToken(); String url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse"; String payload = "{\n" + " \"messages\": [\n" + " {\n" + " \"role\": \"user\",\n" + " \"content\": [{ \"text\": \"Hello\" }]\n" + " }\n" + " ]\n" + "}"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .header("Content-Type", "application/json") .header("Authorization", "Bearer " + token) .POST(HttpRequest.BodyPublishers.ofString(payload)) .build(); HttpClient client = HttpClient.newHttpClient(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } }