API Gateway で「CloudWatch Logs role ARN must be set in account settings to enable logging」が発生するときの対処方法

2022.06.27

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

困っていた内容

API Gateway を利用して独自の REST API を構築しています。デバックのためステージの設定から「CloudWatch Logs の有効化」を設定したところ、次のエラーが表示されて変更が保存できません。
ロールを設定する必要があるようですが、ページ内に設定項目が見つかりません。どこにありますか。

CloudWatch Logs role ARN must be set in account settings to enable logging

どう対応すればいいの?

左ペインの「設定」をクリックして、「CloudWatch ログのロール ARN」にロールの ARN を入力してください。

CloudWatch Logs にログを出力するには、CloudWatch Logs への書き込み権限をもつ IAM ロールが必要となります。IAM ロールを作成していない場合は、IAM ロールの作成から行う必要があります。

やってみた

IAM コンソールを開き、「ロール」から「ロールを作成」をクリックします。

「他の AWS のサービスのユースケース」から「API Gateway」を選択して、「次へ」をクリックします。

「許可ポリシー」に CloudWatch Logs への許可が設定されたAmazonAPIGatewayPushToCloudWatchLogsポリシーが選択されていることを確認し、「次へ」をクリックします。

「ロール名」に任意の名前を入力し、「ロールの作成」をクリックします。

作成されたロールの ARN を取得するため、「ロールを表示」をクリックします。

ARN をコピーします。

API Gateway の設定を開いて「CloudWatch ログのロール ARN」にコピーした ARN を入力し、「保存」をクリックします。

「ログ/トレース」から CloudWatch Logsが有効化できることを確認します。

設定反映のため再度デプロイは不要です。
取得したログは所定のロググループに保管されます。

CloudWatch コンソールで API Gateway のログイベントを表示する - Amazon API Gateway

参考資料

ステージ設定、ログ、またはステージ変数を更新するときに API を再デプロイする必要はありません。