はじめに
ClineでBedrockのclaude-3.7-sonnet
を利用しようとしたがうまくいかず、特にMFAをつけたままでアクセスするのに苦戦したため共有します。
AWS_SESSION_TOKEN
でも接続できますが、すぐに期限切れしてしまい使い勝手が悪いため他の方法を探しました。また、MFAを使わない場合やSSOで認証する場合は以下に詳しかったです。
TL;DR
MFAで持続的なセッションが保てるよう、認証にaws-vault
を使います。Clineから認証できるよう、~/.aws/config
にcredential_process
とmfa_serial
を設定します。
前提
以下の準備をお願いいたします。
- VS CodeとClineのセットアップ(今回はWindows版として解説)
- AWS ConsoleにログインするためのPIN方式(Google Authenticatorなど)のMFAデバイス
- MFAデバイスの
ARN
名 -
AWS CLI
とaws-vault
のインストール(以下で解説します)
MFAのARN名は、AWS Consoleの右上をクリック→[セキュリティ認証情報]→[多要素認証(MFA)]から確認できます。
今回はWindows上でVS Codeを利用する場合の説明となりますが、Remote ConnectionでWSLに接続している場合はWSL上にaws-cli
とaws-vault
のインストールが必要です。トラブルシューティングの項目も参照してください。
AWS CLI/aws-vaultのインストール
すでにインストールされている方は次節にスキップしてください。
まずPowerShellの管理者ウインドウを起動します。
次にAWS CLI
をインストールします。以下のドキュメントの通りにインストールを行います。
次に、別の新しい管理ウインドウでChocolateyのchoco
コマンドをインストールします。以下のドキュメントにインストール用のワンライナーがあるので利用します。
choco --version # 動作確認
choco
コマンドでaws-vault
をインストールします。
choco install aws-vault
aws-vault --version # 動作確認
aws-vault用のプロファイルを作成する
適当な名前でaws-vault用のプロファイルを作成します。
aws-vault add mybedrock # 名前は任意
.aws/config
に[profile mybedrock]
という項目ができるので、以下の通りにcredential_process
とmfa_serial
を設定します。region
も設定します。
[profile mybedrock]
credential_process=aws-vault exec --json --duration=15h mybedrock
region=us-east-1
mfa_serial=arn:aws:iam::012345678901:mfa/my-smartphone
動作確認
code .
VS Codeが起動するので、Clineを表示し、右上の歯車(⚙)マークを押します。設定画面が表示されたら以下の通りにセットします。
-
API Provider
:AWS Bedrock
-
AWS Profile
を選択 -
AWS Profile Name
にプロファイル名(今回の例ではmybedrock
) -
AWS Region
に適切なリージョン(us-east-1
など)
右上の「Done
」を押すと設定が反映されるので、テストします。
初回やAWS_SESSION_TOKEN
が期限切れしたタイミングでMFAデバイスのPINコード入力を促されますので、都度入力すると使えるようになります。
トラブルシューティング
うまく動かない時は、VS Code
のAWS Toolkit
拡張機能をインストールし、作成したプロファイル(mybedrock
)で接続できるかどうかをチェックすると良いでしょう。拡張機能のログからエラーメッセージが確認できるのでトラブルシューティングに役立ちます。
よくあるのが環境変数 AWS_VAULT
がセットされていることで起こるエラーです。これはPowerShell
ウインドウを立ち上げ直すことで解消します。
Remote Connectを利用する場合
WSLなどに接続している場合はWSLへaws cli
とaws-vault
のインストールが必要です。認証用のウインドウが開かず、うまく接続できない場合があります。その場合はWSLのコマンドラインから
aws-vault exec --json --duration=15h mybedrock -- aws s3 ls
などとして一度セッションを作ってから接続するとうまくいきます。
エラーが出る場合
aws-vault: error: Specified keyring backend not available, try --help
というエラーが出る場合、pass
アプリケーションをインストールしていない可能性があります。インストールすれば回避できるようです。
また--backend=file
オプションをつけることで認証情報をファイルにいれて回避できますが、パスフレーズを聞かれるため、環境変数に認証情報を入れる必要があるでしょう。
参考: