はじめに
UdemyのAWS Bedrockハンズオンコースで、CDKのブートストラップ実行中にいくつかの問題に遭遇したので、解決までの過程をメモとして残します。
こちらの動画です。
【AWS】Amazon Bedrockによる生成AIウェブアプリ構築(RAG編)
CDKとブートストラップについて
AWS CDK(Cloud Development Kit)は、プログラミング言語を使ってAWSリソースを定義できるフレームワークです。ブートストラップとは、CDKがAWSアカウントにデプロイするために必要な初期リソース(S3バケットやIAMロールなど)を作成するプロセスです。
発生した問題
以下のCDKコマンドを実行した際にエラーが発生:
npx -w packages/cdk cdk bootstrap
注:npxを使用しているのは、プロジェクトローカルにインストールされたCDKを実行するためです。-wオプションは、モノレポ構成でのワークスペース指定に使用します。
最初のエラーメッセージ:
Unable to resolve AWS account to use. It must be either configured when you define your CDK Stack, or through the environment
修正後の2番目のエラーメッセージ:
Error: Need to perform AWS calls for account [ACCOUNT_ID], but no credentials have been configured
IAM設定の疑い
エラーメッセージから、以下の点でIAM設定に問題があると推測:
- アカウントIDが認識されていない → 認証情報の設定が不完全
- AWS CLIの設定が見つからない → アクセスキーが未設定または無効
- EC2インスタンスからの実行時の特殊な権限要件の可能性
試行錯誤のプロセス
1. 初期状態の確認
aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key <not set> None None
secret_key <not set> None None
region ap-northeast-1 imds
2. 環境変数の設定
AWSアカウントとリージョンを環境変数として設定:
export CDK_DEFAULT_ACCOUNT=[AWSアカウントID]
export CDK_DEFAULT_REGION=ap-northeast-1
3. AWS CLIの認証情報設定
新しいアクセスキーを生成し、AWS CLIの設定を実施:
aws configure
AWS Access Key ID: [新規生成したアクセスキー]
AWS Secret Access Key: [新規生成したシークレットキー]
Default region name: ap-northeast-1
Default output format: json
解決のポイント
- EC2用の新しいアクセスキーを作成することで解決
- 既存のCLI用アクセスキーとは別に、EC2用のキーを使用するのがベストプラクティス
- 環境変数とAWS認証情報の両方を正しく設定することが重要
成功時の出力
最終的に以下のメッセージが表示され、ブートストラップが完了:
✅ Environment aws://[ACCOUNT_ID]/ap-northeast-1 bootstrapped.
参考情報
EC2の作成はこちらの動画も参考にしました。(いつもお世話になっております、、、!!!)
【AWS 入門】EC2とDockerでHello Worldしよう