IAM Identity Centerのグループ追加をトリガーにBedrockアプリケーション推論プロファイルを自動作成してみた

IAM Identity Centerのグループ追加をトリガーにBedrockアプリケーション推論プロファイルを自動作成してみた

2026.03.09

はじめに

Amazon Bedrockの利用料を個人ごとに追跡したい場合、ユーザーごとにアプリケーション推論プロファイルを作成する方法があります。
しかし、アプリケーション推論プロファイルはマネジメントコンソールから作成できず、CLI/SDKでのCreateInferenceProfile API呼び出しが必要です。
ユーザーが増えるたびに手動でCLIを実行してプロファイルを作成する運用は負荷が高く、対象モデルが複数あればなおさらです。

今回はこの運用負荷を解消するために、IAM Identity Centerの特定グループにユーザーを追加するだけで、自動的にBedrockアプリケーション推論プロファイルが作成されるイベント駆動アーキテクチャを構築してみました。

アーキテクチャ

全体構成

alt text

本構成はAWSマルチアカウント環境を前提としており、2つのアカウントにまたがるクロスアカウント構成になっています。

  • Account A(管理アカウント)
    • IAM Identity Centerが稼働するアカウント
  • Account B(ワークロードアカウント)
    • Bedrockを利用するアカウント

IAM Identity Centerは管理アカウントで管理されますが、推論プロファイルを作成したいのはワークロードアカウント側です。
このアカウント間のギャップを、Amazon EventBridgeのクロスアカウントイベント転送で橋渡しします。

イベントフロー

イベントの流れは以下の通りです。

  1. IAM Identity Centerでグループにユーザーを追加
  2. CloudTrailがAPIコールをキャプチャ
  3. 管理アカウントのEventBridgeルールがイベントをフィルタリング
  4. クロスアカウントでワークロードアカウントのカスタムイベントバスに転送
  5. ワークロードアカウント側のEventBridgeルールがStep Functionsを起動
  6. Step Functionsが管理アカウントのIdentity Store APIをクロスアカウントで呼び出し、ユーザー名やグループ名を取得
  7. 取得した情報をもとにBedrock CreateInferenceProfile APIで推論プロファイルを作成

設計ポイント

Lambdaレス構成

本構成ではLambda関数を一切使用していません。
Step FunctionsのAWS SDK統合とJSONataによるデータ変換だけで完結しています。
コード管理が不要なため、デプロイや運用の負荷を大幅に削減できます。

クロスアカウント構成

IAM Identity Centerが稼働するアカウントとBedrockを利用するアカウントが異なるケースは、AWS Organizationsを利用した環境では一般的です。

本構成ではAmazon EventBridgeのクロスアカウントイベント転送を利用して、管理アカウントのCloudTrailイベントをワークロードアカウントに転送しています。
ワークロードアカウント側にカスタムイベントバスを作成し、管理アカウントからのPutEventsを許可するリソースポリシーを設定しています。

Step Functionsのワークフロー

ステートマシンは大きく2つのフェーズで構成されています。

  1. GetUserAndGroupInfo(Parallel State)
    • Identity Store APIのDescribeUserDescribeGroupを並列で呼び出し
    • ユーザー名、表示名、メールアドレス、グループ名を取得
    • Credentialsフィールドで管理アカウントのIAMロールをAssumeRole
  2. CreateProfilesMap(Map State)
    • 設定された複数モデル(例: Claude Sonnet 4.6、Claude Haiku 4.5)に対して並列でプロファイルを作成
    • プロファイル名: {ユーザー名}-{モデルエイリアス}
    • ConflictExceptionはキャッチして正常終了(既存プロファイルがある場合)

動作確認

ユーザーをグループに追加

IAM Identity Centerの対象グループにユーザーを追加します。

alt text

正常に追加されました。

alt text

CloudTrailイベントの確認

ユーザー追加後、管理アカウントのCloudTrailでイベントが記録されていることを確認してみます。

alt text

AddMemberToGroupイベントがsso-directory.amazonaws.comをソースとして記録されています。
このイベントがEventBridgeルールにマッチし、ワークロードアカウントへ転送されます。

Step Functionsの実行確認

ユーザー追加後しばらくすると、ワークロードアカウント側のStep Functionsが自動的に実行されます。
CloudTrailイベントの配信には数十秒〜数分程度かかります。

alt text

実行グラフを確認すると、GetUserAndGroupInfoで並列にユーザー情報・グループ情報を取得した後、CreateProfilesMapで各モデルのプロファイルが並列に作成されていることが分かります。

alt text

無事アプリケーション推論プロファイルも作成されています。

alt text

作成されたプロファイルの確認

作成されたアプリケーション推論プロファイルをCLIでも確認してみます。

aws bedrock list-inference-profiles \
  --type-equals APPLICATION \
  --region ap-northeast-1 \
  --no-cli-pager

{
    "inferenceProfileSummaries": [
        {
            "inferenceProfileName": "sakai.takahisa-claude-haiku-4-5",
            "description": "Takahisa Sakai sakai.takahisa ClaudeCode claude-haiku-4-5",
            "createdAt": "2026-03-09T10:56:58.901196+00:00",
            "updatedAt": "2026-03-09T10:56:58.901196+00:00",
            "inferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:application-inference-profile/08onxjbogqwv",
            "models": [
                {
                    "modelArn": "arn:aws:bedrock:::foundation-model/anthropic.claude-haiku-4-5-20251001-v1:0"
                },
                {
                    "modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-haiku-4-5-20251001-v1:0"
                }
            ],
            "inferenceProfileId": "08onxjbogqwv",
            "status": "ACTIVE",
            "type": "APPLICATION"
        },
        {
            "inferenceProfileName": "sakai.takahisa-claude-sonnet-4-6",
            "description": "Takahisa Sakai sakai.takahisa ClaudeCode claude-sonnet-4-6",
            "createdAt": "2026-03-09T10:56:59.921840+00:00",
            "updatedAt": "2026-03-09T10:56:59.921840+00:00",
            "inferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:application-inference-profile/lq7ohnzoy68l",
            "models": [
                {
                    "modelArn": "arn:aws:bedrock:::foundation-model/anthropic.claude-sonnet-4-6"
                },
                {
                    "modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-6"
                }
            ],
            "inferenceProfileId": "lq7ohnzoy68l",
            "status": "ACTIVE",
            "type": "APPLICATION"
        }
    ]
}

ユーザー名とモデルエイリアスを組み合わせたプロファイルが作成されています。
ステータスがACTIVEになっていれば、このプロファイルARNを指定してBedrockのInvoke APIを呼び出すことができます。

まとめ

IAM Identity Centerのグループにユーザーを追加するだけで、Bedrockのアプリケーション推論プロファイルが自動作成されるイベント駆動アーキテクチャを構築しました。
Step FunctionsのAWS SDK統合とJSONataを活用することで、Lambda関数を一切使わずに実現できています。
コンソールからは作成できないアプリケーション推論プロファイルの運用を自動化でき、ユーザー追加時の手間を削減できました。
今後はCloudTrailイベントの「ベストエフォート配信」を補完するスケジュール実行でのバッチ同期や、グループからのユーザー削除をトリガーにしたプロファイルの自動削除、プロファイル作成時のSlack通知なども検討していきたいと思います。
どなたかの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事