0
2

More than 1 year has passed since last update.

【CDK】cdk deploy実行時に「but the current credentials are for XXXXXXXXXXX」のエラー

Posted at

はじめに

cdk deployコマンドを実行したところ、タイトル記載のエラーが発生し、コマンド実行に失敗しました。
本記事では、今回の事象と原因、解決策を記載します。

環境情報

実行環境:Mac(Big Sur 11.7.2)
CDK使用言語:TypeScript
cdk-cliのバージョン:2.61.1

事象

cdk deployコマンド実行時に以下のエラーが出ました。
・実行コマンド
 cdk deploy --profile user1 --region ap-northeast-1

・エラー内容
Stack Deployments Failed: Error: Need to perform AWS calls for account user1, but the current credentials are for XXXXXXXXXXX

原因

Stackインスタンスに渡す環境情報に不備があったことが原因でした。
CDKでは、Stackインスタンスに以下の環境情報を渡します。
 account:AWSアカウントID
 region:デプロイ先リージョン

CDKでは、処理のエントリーポイントとなるファイル(binディレクトリにあるファイル)でStackインスタンスを生成します。
そして、生成時のコンストラクタの第3引数(euvプロパティを含むオブジェクト)に環境情報を渡します。
環境情報のaccountでは、デプロイ先のAWSアカウントIDを記載します。

sample.ts
import { BackendStack } from '../lib/backend-stack';
import { App } from 'aws-cdk-lib';

type AccountInfomation = {
  account:string,
  region:string
};

const app:App = new App();
//Stackインスタンスに渡す環境情報
const accountInformation:AccountInfomation = {
  account: "XXXXXXXXXXX",  //デプロイ先AWSアカウントIDを記載
  region: "ap-northeast-1",
};
//Stackインスタンス生成
new BackendStack(
  app,
  "KawakitaBackendStack",
  { env: accountInformation }
);

しかし、私はaccountプロパティにAWSアカウントIDではなく、コマンド実行時のprofileオプションで指定したIAMユーザー名を記載していました。

sample.ts
const accountInformation:AccountInfomation = {
  account: "user1",  //IAMユーザーを記載していた
  region: "ap-northeast-1",
};

cdkコマンドでは、profileオプションで指定したIAMユーザーから、そのユーザーが属するAWSアカウントIDを特定し、内部で保持します。
そして、特定したIDと、Stackに渡したaccountプロパティの値が同じか確認するのですが、ここが異なっていた場合、上記のエラーが発生します。

解決策

accountプロパティの値を、IAMユーザー名からAWSアカウントIDに修正しました。

const accountInformation:AccountInfomation = {
- account: "user1",
+ account: "XXXXXXXXXXX",  //AWSアカウントIDを記載
  region: "ap-northeast-1",
};

最後に

accountプロパティにAWSアカウントIDを渡すのは常識でしょうが、そこが抜けていると今回のようなエラーになることが分かりました。
同様のエラーが発生した時の解決の一助になれば幸いです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2