BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS SDK】【Cognito】AWS SDK for JavaScriptで発生したエラー「CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1」 を解消する

初めに

こんにちは、株式会社BFT新人エンジニアのないとうです。
AWS SDK for JavaScriptのadminAddUserToGroup関数を使ってCognitoユーザープールのユーザーをグループに追加しようとしたところ
「CredentialsError: Missing credentials in config,
if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1」
というエラーが発生しました。
ですので今回は、エラーの解消までに、取った手段を紹介したいと思います。
同じエラーが発生した人の参考になれば幸いです。

作業環境

今回の作業環境は以下になります。

アクセスキーの設定

AWS SDKを使うにあたってアクセスキーが必要との記載がAWSのドキュメントにあったのでこちらの設定を行っていきたいと思います。
方法としてはプロジェクトの直下に./aws/credentials ファイルを作成してそこに以下のようにキーを設定します。

[default]
aws_access_key_id = "アクセスキー"
aws_secret_access_key ="シークレットアクセスキー"

この状態で再度実行したのですがエラーは変わりませんでした。

credentialの設定

AWS SDKを使うにあたってアクセスキーだけでなく、資格情報も必要との記載がAWSのドキュメントにあったのでこちらの設定を行っていきたいと思います。
方法としてはCognitoのIDプールを作成してそこでできるIDプールのIDを用いて以下のようにプログラムの<script>内に追記します。

var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:"IDプールのID"});
var myConfig = new AWS.Config({
  credentials: myCredentials, 
  region: 'ap-northeast-1'
});

IDプール作成時
「There was a problem modifying this identity pool. Please try again.」
上記のようなエラーが発生する場合はこちらを参照してください。
bftnagoya.hateblo.jp 追記した状態で実行したところ「AccessDeniedException」エラーが発生しました。
これはIDプールに設定したロールがデフォルト状態で権限が足りなかったために発生したものなので
権限を追加したところ問題なく実行できました。

終わりに

今回発生したエラーは、AWSの初期設定が完了していなかったことが原因でした。
ユーザーをプールに追加する動作以外でもAWS SDKを使う場合はこれらの設定が必要になると思うので、
忘れずに設定したいと思います。
同じエラーが起きた人の参考になれば幸いです。
それでは。


参考

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com