

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

# Amazon Bedrock API キーを生成する
<a name="api-keys-generate"></a>

Amazon Bedrock API キーは、AWS マネジメントコンソール または AWS API を使用して生成できます。AWS マネジメントコンソール を使用して、数ステップで Amazon Bedrock API キーを簡単に生成することをお勧めします。

**警告**  
Amazon Bedrock を試用する際は、Amazon Bedrock API キーの使用を制限することを強くお勧めします。セキュリティ要件が高いアプリケーションに Amazon Bedrock を組み込む準備ができたら、短期の認証情報に切り替える必要があります。詳細については、「IAM ユーザーガイド」の「[長期的なアクセスキーに対する代替方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)」を参照してください。

**Topics**
+ [コンソールを使用して Amazon Bedrock API キーを生成する](#api-keys-generate-console)
+ [API を使用して長期 Amazon Bedrock API キーを生成する](#api-keys-generate-api-long-term)
+ [クライアントライブラリを使用して短期 Amazon Bedrock API キーを生成する](#api-keys-generate-short-term)
+ [短期 Amazon Bedrock API キーの自動更新を設定する](#api-keys-refresh-short-term)

## コンソールを使用して Amazon Bedrock API キーを生成する
<a name="api-keys-generate-console"></a>

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

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

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

1. 次のいずれかのタイプのキーを生成します。
   + **短期 API キー** – **[短期 API キー]** タブで、**[短期 API キーを生成]** を選択します。キーは、コンソールセッションが期限切れになると (12 時間以内) 期限切れになるため、キーの生成元の AWS リージョン を呼び出します。リージョンは、生成されたキーで直接変更できます。
   + **長期 API キー** – **[長期 API キー]** タブで、**[長期 API キーを生成]** を選択します。

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

     1. (オプション) デフォルトでは、コア Amazon Bedrock API オペレーションへのアクセスを許可する [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) AWS マネージドポリシーが、キーに関連付けられた IAM ユーザーにアタッチされます。ユーザーにアタッチするポリシーをさらに選択するには、**[高度なアクセス許可]** セクションを展開し、追加するポリシーを選択します。

     1. **[Generate]** (生成) を選択します。
**警告**  
Amazon Bedrock を試用する際は、Amazon Bedrock API キーの使用を制限することを強くお勧めします。セキュリティ要件が高いアプリケーションに Amazon Bedrock を組み込む準備ができたら、短期の認証情報に切り替える必要があります。詳細については、「IAM ユーザーガイド」の「[長期的なアクセスキーに対する代替方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)」を参照してください。



## API を使用して長期 Amazon Bedrock API キーを生成する
<a name="api-keys-generate-api-long-term"></a>

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

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

1. [IAM エンドポイント](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)で [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html) リクエストを送信して、[AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) を IAM ユーザーにアタッチします。このステップを繰り返して、必要に応じて他の管理ポリシーまたはカスタムポリシーをユーザーにアタッチできます。
**注記**  
セキュリティのベストプラクティスとして、IAM ポリシーを IAM ユーザーにアタッチして、Amazon Bedrock API キーの使用を制限することを強くお勧めします。時間制限ポリシーの例とキーを使用できる IP アドレスの制限については、「[インラインポリシーを IAM ユーザーにアタッチしてアクセスキーの使用を制御する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-keys_inline-policy.html)」を参照してください。

1. [IAM エンドポイント](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)で [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html.html) リクエストを送信し、`ServiceName` として `bedrock.amazonaws.com` を 指定して、長期 Amazon Bedrock API キーを生成します。
   + レスポンスで返される `ServiceApiKeyValue` が、長期 Amazon Bedrock API キーです。
   + レスポンスで返された `ServiceSpecificCredentialId` を使用して、キーに関連する API オペレーションを実行できます。

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

------
#### [ CLI ]

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

**前提条件**  
セットアップにより、AWS CLI が AWS 認証情報を自動的に認識できることを確認します。詳細については、「[AWS CLI の設定の構成](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。

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

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

   ```
   aws iam create-user --user-name bedrock-api-user
   ```

1. [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) をユーザーにアタッチします。このステップは、API キーに追加する他の AWS 管理ポリシーまたはカスタムポリシーの ARN で繰り返すことができます。

   ```
   aws iam attach-user-policy --user-name bedrock-api-user --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. 長期 Amazon Bedrock API キーを作成し、*\$1\$1NUMBER-OF-DAYS\$1* をキーの存続日数に置き換えます。

   ```
   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 の設定の構成](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。

次のスクリプトを実行して、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 キーを生成する
<a name="api-keys-generate-short-term"></a>

短期キーには次のプロパティがあります。
+ 以下の値のうち短い方の期間有効:
  + 12 時間ごと
  + キーの生成に使用される IAM プリンシパルによって生成されたセッションの期間。
+ キーの生成に使用されるプリンシパルにアタッチされたアクセス許可を継承します。
+ 生成元の AWS リージョンでのみ使用できます。

長時間実行されるアプリケーションの場合、[aws-bedrock-token-generator](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md) クライアントライブラリは、認証情報の更新時に必要に応じて新しい短期 Amazon Bedrock API キーを作成できます。詳細については、「[短期 Amazon Bedrock API キーの自動更新を設定する](#api-keys-refresh-short-term)」を参照してください。

**前提条件**
+ キーの生成に使用する IAM プリンシパルが、Amazon Bedrock を使用するための適切なアクセス許可で設定されていることを確認します。実験のために、AWS 管理の [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) ポリシーをプリンシパルにアタッチできます。認証情報を保護するための「[IAM のセキュリティベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。
+ セットアップにより、Python が AWS 認証情報を自動的に認識できることを確認します。認証情報を取得するデフォルトの方法は、定義された階層に従います。特定の SDK またはツールの階層は、「[AWS SDK およびツールの標準化された認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)」で確認できます。
+ 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();
```

------

トークンの生成時のさまざまなユースケースのその他の例については、次のリンクを参照してください。
+ [Python](https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md)
+ [Javascript](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md)
+ [Java](https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md)

## 短期 Amazon Bedrock API キーの自動更新を設定する
<a name="api-keys-refresh-short-term"></a>

`aws-bedrock-token-generator` パッケージを活用してスクリプトを作成して、現在の短期キーの有効期限が切れるたびにプログラムで新しい短期キーを再生成できます。まず、「[クライアントライブラリを使用して短期 Amazon Bedrock API キーを生成する](#api-keys-generate-short-term)」の前提条件を満たしていることを確認します。トークンを取得して 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());
    }
}
```

------