2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenHandsからAWS SSO環境のBedrockを使う

2
Last updated at Posted at 2025-06-30

OpenHandsからAmazon Bedrockにアクセスして動くようにします。
AWSの環境を使うにあたり、わりとセキュリティに気を使っている環境では、AWS SSOによる認証を行っている場合があります。
ちょうどそのような環境にあたったのですが、動くまでちょっと苦労したので、対応方法を共有します。

前提条件

  • DockerおよびDocker ComposeがインストールされたLinux環境であること
  • AWS CLI(v2)がインストールされており、基本的な操作が可能であること
  • AWS SSOが設定されており、利用するIAMロールにBedrockへのアクセス権限が付与されていること

AWS CLIのSSO認証設定

OpenHandsコンテナを起動する環境で、AWS CLIをSSO経由で認証できるように設定します。

  1. AWSアクセスポータルでSSOの情報を確認します
    アクセスポータルで、使用するロールのアクセスキーをクリックして開くと、以下のポップアップが表示されます。
    AccessKey.png

  2. ~/.aws/config をエディタで開きます

  3. ~/.aws/config に以下のSSOプロファイルの設定を追加します

    config
    [profile your-sso-profile-name] # 任意のプロファイル名
    sso_start_url = https://your-sso-start-url.awsapps.com/start # SSOの開始URL
    sso_region = your-sso-region # SSOリージョン
    sso_account_id = your-sso-account-id # ポップアップ先頭部のアカウントの後のカッコ内の12桁の数字
    sso_role_name = your-sso-role-name # ポップアップ先頭のロール名
    region = us-east-1 # Bedrockを利用するリージョン
    output = json
    

OpenHandsのDocker環境設定

AWS CLIの設定を反映した、OpenHandsのDocker環境を設定します。

  1. OpenHandsのディレクトリを作成し、作成したディレクトリに移動します

    mkdir openhands
    cd openhands
    
  2. docker-compose.yaml をエディタで開き、以下の内容を設定します (環境に応じて各設定値は調整して下さい)

    docker-compose.yaml
    version: "3.9"
    
    services:
        openhands:
            image: docker.all-hands.dev/all-hands-ai/openhands:0.39
            container_name: openhands-app
            volumes:
                - /var/run/docker.sock:/var/run/docker.sock
                - ./.openhands-state:/.openhands-state
                - ~/.aws:/root/.aws:ro # AWS設定ファイルとSSOキャッシュを読み取り専用でマウント
            ports:
                - "3000:3000"
                - "41234:41234"
            env_file:
                - .env
            environment:
                - SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
                - SANDBOX_VSCODE_PORT=41234
            extra_hosts:
                - "host.docker.internal:host-gateway"
            pull_policy: always
    
  3. .env をエディタで開き、以下の内容に設定します

    .env
    AWS_PROFILE=your-sso-profile-name # SSO認証で設定したプロファイル名
    AWS_REGION=us-east-1 # Bedrockを利用するリージョン
    
    LLM_RETRY_MIN_WAIT="60"
    LLM_RETRY_MAX_WAIT="120"
    LLM_MAX_INPUT_TOKENS="10240"
    LLM_MAX_OUTPUT_TOKENS="10240"
    

SSO認証

OpenHandsを起動する前に、SSO認証を行います。

  1. 以下のSSO認証のコマンドを実行します
    aws sso login --profile your-sso-profile-name
    
  2. ブラウザが開き、SSOログインが求められたらログインします
  3. Authorization requestedが表示されたら、コマンド実行時に表示されたコードと画面上のコードが一致することを確認し、Confirm and continueをクリックして承認します
  4. Allow access to your data?が表示されたら、Allowをクリックして許可します

ログインが成功すると、一時的な認証情報がキャッシュされます。
これらの認証情報は通常、 ~/.aws/sso/cache ディレクトリに保存されます。

OpenHandsの起動

SSO認証が済んでいる状態で、Docker Composeを使ってOpenHandsを起動します。

cd openhands # openhandsディレクトリに移動
docker compose up # 設定変更後は --build オプションを付けるなど適宜変更してください

OpenHandsでの設定

OpenHandsが起動したら、ブラウザでアクセスして設定画面を開き、LLMタブで使いたいモデル、リージョンに応じて以下のように設定します。

  • 詳細設定: on
  • カスタムモデル: bedrock/anthropic.claude-sonnet-4-20250514-v1:0
    (ここでは Claude 4 sonnet を指定しています)
  • ベースURL: https://bedrock-runtime.us-east-1.amazonaws.com
    (ここでは us-east-1 リージョンを指定しています)
  • APIキー: 任意の文字列
  • エージェント: CodeActAgent

トラブルシューティング

参考程度に、いくつかありそうなトラブルについて書いておきます。

  • 「Unable to locate credentials」エラー:
    • ~/.awsディレクトリが正しくコンテナにマウントされているか確認してください。
    • ホストでaws sso login --profile your-sso-profile-nameが成功し、認証情報がキャッシュされているか確認してください。
    • AWS_PROFILE環境変数が正しく設定されているか確認してください。
    • ~/.aws/credentialsファイルが存在する場合、SSOのキャッシュと競合する可能性があります。一時的にリネームして試してみてください。
  • 「Access Denied」エラー:
    • SSO経由で利用しているIAMロールに、Bedrockへの適切なアクセス権限(bedrock:InvokeModelなど)が付与されているか確認してください。
    • Bedrockのリージョンが正しく設定されているか確認してください。

参考

SSOではない場合はこちらが参考になります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?