概要
- Amplify の SSR 環境で Amazon SDK をセキュアに設定する方法
- Amplify のコンピューティングに対して IAM ロールを設定する方法
今回の障害
- Amazon Bedrock SDK を Amplify の SSR 環境から接続したいが、アクセスキーやシークレットキーは設定したくない
- ローカル環境では SSO により認証情報が取得され、問題なく実行できる
- ステージング環境などのデプロイ環境では
CredentialsProviderError: Could not load credentials from any providers
というエラーが発生する
解決方法
1. IAM ロールを作成する
-
IAM > ロール > 新しいロールを作成
-
信頼されたエンティティの種類 → AWS サービス
-
カスタム信頼ポリシーを追加
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "amplify.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
必要な権限を追加(使用するリソースは適宜調整)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:InvokeModel" ], "Resource": "*" } ] }
2. Amplify のコンピューティングに作成した IAM ロールを追加
- Amplify の管理画面を開く
- [すべてのアプリ] > 該当のアプリ > [アプリケーションの設定] > [IAM ロール] に移動
- コンピューティングロールを編集
- デフォルトのロールに先ほど作成した IAM ロールを選択し、保存
- ブランチごとに IAM ロールを選択可能
- デフォルトではすべてのブランチがこのロールを使用するため、他の SDK を使いたい場合は IAM ロールを分けると便利
Issue
GitHub Issue - AWS Amplify Hosting
リリース情報
- 2025年2月18日 にリリースされた模様
- チュートリアル
これで、Amplify の SSR 環境から Amazon Bedrock SDK をセキュアに利用できるようになります! 🎉