🐡

CloudFormationを使用したAWS4リクエスト(AWS Signature v4)時のエラーとその対応方法

2024/01/20に公開

最初に

最近、AWS CloudFormationを利用してLambda関数をデプロイしようとした際、思わぬエラーに直面しました。このエラーは、CloudFormation経由でLambda関数をデプロイする過程で発生し、その解決には少し時間がかかりました。本記事では、この問題に対する対応方法を共有し、同様の問題に直面するかもしれない他の開発者の方々への参考として記録しておきます。

発生したエラー

今回実行したコマンドは以下です。
pipenv run npx sls deploy

エラーは以下の通りです(一部情報は伏せています)。

Deploying monitor to stage dev (ap-northeast-1)

✖ Stack monitor-devel failed to deploy (9s)
Environment: darwin, node 21.1.0, framework 3.2.1 (local), plugin 6.4.0, SDK 4.5.1
Credentials: Local, "default" profile
Docs:        docs.serverless.com
Support:     forum.serverless.com
Bugs:        github.com/serverless/serverless/issues

Error:
'/2024000/ap-northeast-1/cloudformation/aws4_request' not a valid key=value pair (missing equal-sign) in Authorization header: 'AWS4-HMAC-SHA256 Credential=AKIA...,/20240000/ap-northeast-1/cloudformation/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=c87d...'.

原因と解決策

このエラーの主な原因は、AWSの認証情報(AWS_ACCESS_KEYとAWS_SECRET_ACCESS_KEY)が、現在使用しているAWSアカウントと異なるものに設定されていたことでした。aws configureで設定された認証情報が、異なるAWSアカウントのIAMユーザーのものであったため、CloudFormationが正しく認証を行えずにエラーが発生していました。(初歩的すぎて悲しくなりました。)

解決策は、aws configureコマンドを使用して、デプロイしたいAWSアカウントの正しい認証情報で上書きすることでした。この手順を実行した後、無事にLambda関数のデプロイが完了しました。

コメント

このような基本的なミスにより時間を浪費してしまうことは、開発の過程で時折あります。しかし、これらの経験は次に同様の問題に直面した時に役立つことが多いです。この記事が、同じエラーに直面するかもしれない他の開発者の方々の参考になれば幸いです。

Discussion