概要
前回記事より、AWS Toolkitの認証をIAM identity Center経由でするまではよかったが、実際にAWSサービスにアクセスできない事象が発生した。
公式ドキュメントで解決方法を模索するも、およそ1週間強まったく解決できなかったので、解決できた方法を残そうと思う。誰かの助力になれば幸いである。
結論
AWS CLIで認証しているプロファイルが正しくなかった。
前提
結論の前に下記の事項を先に確認してほしい。
①SSOプロファイルは設定済みである。
*未設定の場合は下記公式のリンクを確認し、設定してほしい。
設定できている場合は、ConfigおよびCredentialファイルが下記のようになっている。
IAM Identitiy CenterのユーザーとSSO設定のリージョンは注意。
同じにしておく。
②AWS Toolkitで認証したユーザーが正しく認証されている。
下記コマンドをVScodeのターミナルに打ち込む。
aws sts get-caller-identity --profile your profile name
#result
{
"UserId": "************:Bedrock-handson", #数字と認証ユーザー名(ここでは、Identity Centerのユーザー)
"Account": "************", #configのsso_account_id
"Arn": "arn:aws:sts::***********:assumed-role/AWSReservedSSO_AdministratorAccess_***********/Bedrock-handson"
}
ここでresultが出ない場合は、ログイン方法をAWS CLIで再度行う
aws sso login --profile your profile name
著者はこのログイン段階で、プロファイルを指定できていなかったみたいだ。
解決方法
前提事項がすべて問題なくクリアしているにも限らずアクセスできない場合
下記コマンドを実行
*AWS CLIで実行されるプロファイルを設定する。
export AWS_PROFILE=your_sso_profile_name #自分で設定したプロファイル名
特に入力した結果の出力はない。
AWSサービスへアクセスできるか確認する場合は、下記コマンドを実行。
Bedrockでどのモデルが使用できるか確認するだけのコマンド
aws bedrock list-foundation-models
#result
{
"modelSummaries": [
{
"modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/amazon.titan-text-express-v1:0:8k",
"modelId": "amazon.titan-text-express-v1:0:8k",
"modelName": "Titan Text G1 - Express",
"providerName": "Amazon",
"inputModalities": [
"TEXT"
],
"outputModalities": [
"TEXT"
],
"responseStreamingSupported": true,
"customizationsSupported": [],
"inferenceTypesSupported": [],
"modelLifecycle": {
"status": "ACTIVE"
}
},
AWS Toolkitを使用するといっても、実行するのはCLIなので、そのプロファイルが正しくないなら認証できないよねって話だった。
とはいえ、AWS Toolkitの機能を全然使いこなせていないので、実はCLIで実行しなくてもアクセスする方法があるのかもしれない。
AWS Toolkit機能を知るのは、今後の課題にしておく。
あとがき
著者は、VscodeでPythonを実行する上で、venvで仮想環境を構築し、それ経由で実行するよう設定していた。AWS CLIの実行も、仮想環境で実行していた。
そのため、同じ環境での記事が見当たらず、仮想環境が影響しているのかと、公式ドキュメントを元に解決方法を模索していた。
しかし、全く糸口が見えないまま1週間経過して発狂しそうだったため、Chatgptをアップグレーして相談したところ、10分で解決した。
解決できたことは望ましいが、別の意味で発狂しそうだった。
以上、ここまでお付き合いありがとうございます。ようやくハンズオンで生成AIアプリを動かすことに移行できます。
※2024年9月19日追記
AWS CLIのログイン方法について記載がなく、著者自身もエラーが再現したため、ログイン方法について追記。