Claude CodeをIdentity Center + Bedrock Mantleで使う

漫然と検索したところ Claude Code の種類・AWS IAM と Identity Center・Bedrock Runtime と Mantle と Claude Platform on AWS が混じって混乱したので、実際に叩いて確認した。

コストパフォーマンスや個人情報の責任範囲の観点から Anthropic の認証ではなく Bedrock を利用するとき、長期APIキーを発行を禁止する前提であればこれが良いと思う。

Mantle を使う理由はコンソールからの利用量の確認が容易であるため。生成AIモデルの機能としては Bedrock Runtime も Mantle も変わらない。IAM ではなく Identity Center を使う理由は、許可セットで権限を一括管理できるほうが都合がよかったため。

AWS管理者の作業

  1. AWS組織アカウントで、Identity Centerを有効化する
  2. Claude Codeを使用する人数ぶんユーザーを発行する
  3. 許可セットを作成する
    AWSマネージドポリシーの AmazonBedrockLimitedAccess を当てる。あるいはhttps://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonBedrockLimitedAccess.html を元にインラインポリシーで制限する。
  4. AWSアカウントにユーザーと許可セットを紐づける

Claude Codeユーザーの作業

  1. AWS CLI 最新版を最新にする
    https://docs.aws.amazon.com/ja\_jp/cli/latest/userguide/getting-started-install.html
  2. Claude Codeを最新にする
# claude update
  1. SSOの設定
$ aws configure sso
SSO session name (Recommended): my-sso (何でも良い)
SSO start URL [None]: https://********.awsapps.com/start (アイデンティティソースの値)
SSO region [None]:ap-northeast-1
SSO registration scopes [sso:account:access]: sso:account:access (何も入れずにエンターでいい)

  1. AWSのログイン画面に遷移する。ユーザー発行後何もしていなければここでMFAを設定する。
  2. アクセス許可画面になったら同意する
  3. CLIの画面に戻るとAWSプロファイルの設定になっている
CLI default client Region [ap-northeast-1]:ap-northeast-1 (何も入れずにエンターでいい)
CLI default output format [json]: json (何も入れずにエンターでいい)
CLI profile name [***]: bedrock (何でもいいが再ログインで使うので分かりやすいやつを入れる)
  1. 環境変数を設定する。
$ vi ~/.bashrc

// エンドポイントに Bedrock Mantle を追加。Runtimeと共存だが複雑にしたくなかったので避けた
export CLAUDE_CODE_USE_MANTLE=1

// トークンの利用量をプロジェクトに紐づける場合はカスタムヘッダにプロジェクトIDを渡す
export ANTHROPIC_CUSTOM_HEADERS=anthropic-workspace-id:(プロジェクトID)

$ source ~/.bashrc

  1. Claude Codeの動作を確認する
$ claude

// 起動後に確認すること

/status -> API provider: Amazon Bedrock (Mantle) なのを確認する
/model -> モデルが選べることを確認する

Helloなど適当に会話できることを確認する。