API Gateway のログの IAM ロール設定で BadRequestException が発生するときの対処方法

API Gateway のログの IAM ロール設定で BadRequestException が発生するときの対処方法

Clock Icon2023.04.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

API Gateway のログを CloudWatch Logs へ出力するため IAM ロールを設定したところBadRequestExceptionが表示されて変更が保存できません。
権限関係のようですが、設定した IAM ロールには AWS 管理ポリシーのAmazonAPIGatewayPushToCloudWatchLogsを設定済みで過不足はない認識です。 IAM ロールを設定する方法を教えてください。

BadRequestException: The role ARN does not have required permissions configured. Please grant trust permission for API Gateway and add the required role policy.

どう対応すればいいの?

IAM ロールの信頼関係をご確認ください。

API Gateway で CloudWatch Logs を有効にする際に必要な IAM ロールは、権限に加えて、API Gateway(apigateway.amazonaws.com)への信頼関係が設定されている必要があります。

信頼関係は IAM ロール側で設定し、一例として上記画像の設定の場合は、次のような信頼関係に変更すると API Gateway に変更ができます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "apigateway.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

そのため、IAM ロールの信頼関係を確認し、API Gateway(apigateway.amazonaws.com)への信頼関係が不足していないかご確認ください。

ロールの信頼ポリシーを変更するには(コンソール) - AWS Identity and Access Management

なお、信頼関係の設定方法は上記ドキュメント、設定変更ではなく IAM ロールから新規に作成する場合は次のブログの「やってみた」が参考になると思います。

参考資料

アクセス許可をアカウントに付与するには、apigateway.amazonaws.com を信頼できるエンティティとして IAM ロールを作成し、前述のポリシーを IAM ロールにアタッチして、その IAM ロールの ARN をアカウントの cloudWatchRoleArn プロパティに設定します。

多くの AWS サービスを設定するには、そのサービスに IAM ロールを渡す必要があります。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.