👻

Amplify の Next.js SSR 環境で IAM ロールを設定する方法

2025/03/03に公開

概要

  • Amplify の SSR 環境で Amazon SDK をセキュアに設定する方法
  • Amplify のコンピューティングに対して IAM ロールを設定する方法

今回の障害

  • Amazon Bedrock SDK を Amplify の SSR 環境から接続したいが、アクセスキーやシークレットキーは設定したくない
  • ローカル環境では SSOにより認証情報が取得され、問題なく実行できる
  • ステージング環境などのデプロイ環境では CredentialsProviderError: Could not load credentials from any providers というエラーが発生する

解決方法

1. IAM ロールを作成する

  1. IAM > ロール > 新しいロールを作成

  2. 信頼されたエンティティの種類 → AWS サービス

  3. カスタム信頼ポリシーを追加

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "amplify.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  4. 必要な権限を追加(使用するリソースは適宜調整)

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "bedrock:InvokeModel"
                ],
                "Resource": "*"
            }
        ]
    }
    

2. Amplify のコンピューティングに作成した IAM ロールを追加

  1. Amplify の管理画面を開く
  2. [すべてのアプリ] > 該当のアプリ > [アプリケーションの設定] > [IAM ロール] に移動
  3. コンピューティングロールを編集
  4. デフォルトのロールに先ほど作成した IAM ロールを選択し、保存
    • ブランチごとに IAM ロールを選択可能
    • デフォルトではすべてのブランチがこのロールを使用するため、他の SDK を使いたい場合は IAM ロールを分けると便利

Issue

GitHub Issue - AWS Amplify Hosting

リリース情報


これで、Amplify の SSR 環境から Amazon Bedrock SDK をセキュアに利用できるようになります! 🎉

追記

  • Amplifyで、Bedrock使う場合は、AI kitが良さそうです。
  • ドキュメント外のSDKを使う場合に、この記事が役に立てば幸いです。

Discussion