Claude Code on Amazon Bedrock を開発プロジェクトで使う際の設定ファイル構成について考える

記事タイトルとURLをコピーする

はじめに

サーバーワークスの宮本です。本記事では、開発プロジェクトで Claude Code を Amazon Bedrock 経由で使用する際の設定ファイル構成について個人的に整理してみた内容を記載します。

Claude Code on Amazon Bedrock の基本的なセットアップ

Claude Code の公式ドキュメントを参照してください。

https://code.claude.com/docs/ja/amazon-bedrock

設定の優先順位

Claude Code の設定は複数の方法があり、以下の優先順位で適用されます。利用シーンに合わせて、どの設定をどこに書くかを検討する必要があります。

優先順位 設定 利用シーン
1 管理設定(managed-settings.json 組織管理者側で設定を強制したい場合
2 コマンドライン引数 その場限りの設定を行いたい
3 ローカルプロジェクト設定(.claude/settings.local.json 各プロジェクトで個人の設定をしたい
4 共有プロジェクト設定(.claude/settings.json 各プロジェクトでチーム共通の設定をしたい
5 ユーザー設定(~/.claude/settings.json 個別プロジェクトの設定がない場合、フォールバック先としてのデフォルト値を全てのプロジェクトに対して用意したい

参考. 設定の優先順位

なお、1 の管理設定については筆者も試したことがないので本記事の対象外とします

設定例

以下の前提条件での設定を考えてみます。あくまで例ですので、状況に応じてアレンジしてください。

  • チーム内共通で Claude Code on Bedrock を使用する
  • AWS の認証情報は aws sso login で得る前提

.claude/settings.json (共有プロジェクト設定)

{
  "awsAuthRefresh": "aws sso login",
  "permissions": {
      "deny": [
      "Read(**/.env*)"
      ]
  },
  "env": {
    "CLAUDE_CODE_USE_BEDROCK": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}
  • awsAuthRefresh: こちらを設定しておくと、AWS の一時認証情報が期限切れになった際に、Claude Code が自動的にコマンドを実行してくれます
  • permissions.deny: Claude Code に読み込ませたくないファイルを指定しています。dotenv や direnv のファイルには機微な情報を書かざるを得ないケースもあるため、チーム内共通設定として拒否します
  • CLAUDE_CODE_USE_BEDROCK: Amazon Bedrock を使うことを指定する設定です。チーム内共通で使用する前提のため、共有プロジェクト設定とします
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 非必須トラフィックの送信を無効にします。Amazon Bedrock を使う限りは、デフォルトで送信されない仕様ですが、念の為記載しています

.claude/settings.local.json (ローカルプロジェクト設定)

{
  "env": {
    "AWS_PROFILE": "your-profile-name",
    "AWS_REGION": "ap-northeast-1"
  }
}
  • AWS_PROFILE: プロファイル名は各個人で名前をつけているケースが多いと思いますので、ローカルプロジェクト設定とします
    • 開発環境の AWS リソースにアクセスする用事がある場合、direnv にプロファイル名を設定しておけば Claude Code が読み込んでくれます
    • ただし、後述の Claude Code 用の最小権限の設定をする場合は、Claude Code 用のプロファイル(ローカルプロジェクト設定)と開発環境用のプロファイル(.envrc)を分けて管理すると良いでしょう
  • AWS_REGION: プロファイルにデフォルトリージョンが設定されている場合は、その設定が使用されますので任意です

.gitignore

.claude/settings.local.json
  • ローカルプロジェクト設定は、各個人の設定ですので、Git の管理外としておきます

今回は共有プロジェクト設定とローカルプロジェクト設定を明示的に使い分けましたが、推奨設定を共有プロジェクト設定に書いておき、必要に応じてローカルプロジェクト設定でオーバーライドする方針もありそうです。

その他、設定可能な値は公式ドキュメントをご覧ください。 https://code.claude.com/docs/ja/settings

最小権限設定

Amazon Bedrock 経由で Claude Code を使用するための最小限の IAM ポリシーは以下の通りです。このポリシーのみを持つ IAM Role 等を用意して、最小権限で運用しましょう。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowModelAndInferenceProfileAccess",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream",
        "bedrock:ListInferenceProfiles"
      ],
      "Resource": [
        "arn:aws:bedrock:*:*:inference-profile/*",
        "arn:aws:bedrock:*:*:application-inference-profile/*",
        "arn:aws:bedrock:*:*:foundation-model/*"
      ]
    },
    {
      "Sid": "AllowMarketplaceSubscription",
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:ViewSubscriptions",
        "aws-marketplace:Subscribe"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:CalledViaLast": "bedrock.amazonaws.com"
        }
      }
    }
  ]
}

参考. IAM設定

まとめ

Claude Code は設定項目がかなり多いので、最低限の設定項目をプロジェクト内で定めておくと、安全かつ効率的に開発が進められそうです。