AWS CLIは通るのにCDKデプロイが失敗するときは、CDK CLIのバージョンを確認しよう

AWS CLIが動作しているのにCDKデプロイが認証エラーで失敗する場合は、CDK CLIのバージョンが古い可能性があります。aws loginを使用するには、CDK CLI 2.1100.0以上が必要です。

広告ここから
広告ここまで

目次

    AWS CLI で aws sts get-caller-identity が正常に動作しているにもかかわらず、CDK デプロイが「Need to perform AWS calls for account XXXX, but no credentials have been configured」というエラーで失敗することがありました。この記事ではどういう条件で発生したかや、その解決策について紹介します。

    結論から

    aws loginを使って認証する場合、CDK CLIがaws loginによる認証に対応しているバージョンかどうかをチェックしてください。古いバージョンではこの認証方式をサポートしていない様子で、冒頭のエラーが発生します。

    遭遇した認証エラーなどをざっくりと

    aws login コマンドで認証を行っている状態での作業でした。AWS CLI は正常に動作しているにもかかわらず、CDK デプロイが認証エラーで失敗します。

    $ aws sts get-caller-identity
    {
        "UserId": "AROAVMYPRZZCLHJYSZAXS:username",
        "Account": "12345678",
        "Arn": "arn:aws:sts::12345678:assumed-role/OrganizationAccountAccessRole/username"
    }
    
    $ aws configure list
    NAME       : VALUE                    : TYPE             : LOCATION
    profile    : <not set>                : None             : None
    access_key : ****************XQ6V     : login            : 
    secret_key : ****************YdO7     : login            : 
    region     : us-west-2                : config-file      : ~/.aws/config
    

    これらのコマンドがエラーを返さないため、少なくとも認証は成功していることがわかります。ところがCDK デプロイを実行すると以下のエラーが発生しました。

    $ npx cdk deploy PerformanceAnalyticsStack --require-approval never
    Need to perform AWS calls for account 12345678, but no credentials have been configured
    

    AWS CDK CLIを2.1100.0より最新に更新する

    この問題は AWS CDK CLI のバージョンが古いことが原因でした。CDK CLI 2.1100.0 未満のバージョンでは、 aws login で取得した認証情報を読み取れない様子です。これは想像ですが、aws loginコマンドがリリースされる前のバージョンだったため、新しい認証方式に対応できなかったのではないかと思います。

    ということで解決策もとてもシンプルです。CDK CLI を 2.1100.0 以上にアップグレードしちゃいましょう。Getting started with the AWS CDK に記載されている手順に従って、グローバルインストールの場合は以下のコマンドを実行します。

    npm install -g aws-cdk@latest
    

    インストール後、バージョンを確認します。

    $ cdk --version
    2.1100.1 (build 5e6d3b1)
    

    2.1100.0 以上であることを確認したら、デプロイを実行します。

    $ cdk deploy PerformanceAnalyticsStack --require-approval never
    ✅  PerformanceAnalyticsStack
    ✨  Deployment time: 74.79s
    

    デプロイが正常に完了すれば、問題は解決です。

    おまけ: バージョン確認方法

    現在の CDK CLI のバージョンは以下のコマンドで確認できます。

    cdk --version
    

    aws login を使用する場合、以下のバージョン要件を満たす必要があります。

    • CDK CLI: 2.1100.0 以上
    • AWS CLI: 2.32.0 以上

    AWS CLI のバージョンは以下のコマンドで確認できます。

    aws --version
    

    まとめ

    AWS CLI が正常に動作していても、CDK CLI が古いバージョンの場合は aws login の認証情報を読み取れません。この問題は CDK CLI を 2.1100.0 以上にアップグレードすることで解決できます。

    デプロイ前にバージョンを確認し、定期的にアップデートすることで、同様の問題を防ぐことができます。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark