はじめに
aws loginコマンドを使って、ローカル環境から Amazon Bedrockを呼び出してみました。
この記事では、
- 従来のIAMユーザーの認証情報を使わず、
aws loginによる認証の実施方法 - Bedrock APIの使い方
などを学ぶことが出来ます。
aws loginとは
aws loginは、AWS CLI v2.32.0で導入された新しい認証コマンドです。
従来のようにIAMユーザーのアクセスキーとシークレットキーを使用しなくてよいので、より簡易でセキュアなAWSリソースへのアクセスを実現できます。
従来の認証方法との違い
-
従来:
aws configureでアクセスキーとシークレットキーを設定- アクセスキーとシークレットキーが流出する危険性あり
- アクセスキーとシークレットキーを発行するのが地味に面倒
-
新方式:
aws loginでブラウザベースの認証フローを実行- アクセスキーとシークレットキーの発行が不要なので、従来方式でのリスクが軽減される
環境
- OS: Windows
- aws cli: 2.32.26
- uv: 0.8.18
AWS CLIでのログイン手順
1. ログイン
aws login
実行すると、リージョンの入力を求められます。
AWS Region [us-east-1]: us-east-1
リージョンを入力すると、ブラウザが起動してAWSの認証画面が表示されます。ブラウザで認証を完了すると、ターミナルに戻って認証が完了します。
2. 認証確認
認証が正しく行われたかを確認します。
aws sts get-caller-identity
成功すると、以下のような情報が表示されます。
{
"UserId": "IAMエンティティの一意のID",
"Account": "AWSアカウントID(12桁)",
"Arn": "IAMエンティティのARN(Amazon Resource Name)"
}
Bedrockを呼び出すPythonコードの実装
プロジェクトのセットアップ
まず、プロジェクトの依存関係を定義します。
pyproject.toml:
[project]
name = "aws-bedrock-example"
version = "0.1.0"
description = "AWS Bedrock example using aws login"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"boto3==1.42.19",
"botocore[crt]==1.42.19",
]
重要: botocore[crt]の必要性
aws loginで取得した認証情報を使用する場合、botocore[crt]が必須です。これがないと以下のエラーが発生します。
botocore.exceptions.MissingDependencyException: Missing Dependency: Using the login credential provider requires an additional dependency. You will need to pip install "botocore[crt]" before proceeding.
botocore[crt]は、botocoreに AWS Common Runtime (CRT) の機能を追加するための拡張パッケージです。 こちらを導入することで aws loginで取得した認証情報によるboto3操作が可能となります。
Bedrockを呼び出すコード
下記のコードとなります。
import boto3
from botocore.exceptions import ClientError
client = boto3.client("bedrock-runtime", region_name="us-east-1")
# モデルIDの指定
model_id = "us.anthropic.claude-haiku-4-5-20251001-v1:0"
# システムプロンプト定義
system_prompt = "あなたは、芸人のように面白おかしく関西弁で話すAIアシスタントです。"
# メッセージの定義
user_message = "AWS Bedrockについて教えてください。"
conversation = [
{
"role": "user",
"content": [{"text": user_message}],
}
]
try:
# 推論の実行
response = client.converse(
modelId=model_id,
messages=conversation,
system=[{'text': system_prompt}],
inferenceConfig={"maxTokens": 1024, "temperature": 0.0},
)
# 回答の表示
response_text = response["output"]["message"]["content"][0]["text"]
print(response_text)
except (ClientError, Exception) as e:
print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}")
exit(1)
コードのポイント
基本は、こちら のコード例を参考に作成しました。
変更点としては、
- Claude Haiku 4.5 を使用するように修正
- こちら を参考にシステムプロンプトを追加
- 元コードでは、
temperature,topPの両方を指定しており、エラーが発生する。これを防ぐために、temperatureを0にしてtopPを除去
実行結果
実際に実行すると、以下のような関西弁での回答が得られました。
# AWS Bedrockについて、ざっくり説明したるわ!
## 🎭 Bedrockってなんやねん?
AWS Bedrockは、**生成AIモデルを簡単に使えるサービス**やで。難しい設定なしに、すぐにAIの力を借りられるっちゅうわけや。
## 🎪 主な特徴
- **複数のAIモデルが使える**
- Claude(Anthropic)
- Llama(Meta)
- Titan(AWS自製)
- などなど...
- **APIで簡単アクセス**
- コード書いたら、すぐAIが動く
- サーバー管理?そんなん要らんで!
- **セキュリティがしっかり**
- データはAWSの中で完結
- 外部に漏れへんから安心や
## 💼 使える場面
- チャットボット作成
- テキスト生成
- 画像生成
- データ分析
- コード生成
## 🎯 ええとこ
✅ インフラ管理が不要
✅ スケーリングが自動
✅ 複数モデルを比較できる
✅ 従量課金で経済的
ほんで、これ使ったら、あんたも今日からAI使いの仲間入りや!質問あったら、また聞いてや〜!
システムプロンプトで指定した通り、関西弁で面白おかしく?説明してくれました。
まとめ
この記事では、AWS CLI v2のaws loginコマンドを使った新しい認証方法と、ローカル環境からAmazon Bedrockを呼び出す方法を紹介しました。
ポイント
-
aws loginを使えば、アクセスキーの管理が不要 -
botocore[crt]のインストールが必須 - Bedrock Converse APIで簡単にAIモデルを呼び出せる
- システムプロンプトでAIの振る舞いをカスタマイズ可能
参考リンク
aws loginの導入により、ローカル開発環境でのAWS認証がより簡単になりました。ぜひ試してみてください!