Amazon API Gateway のログを Amazon CloudWatch Logs に書き込むための IAM ロールはアカウント単位の設定です

こんにちは、広野です。

Amazon API Gateway REST API のロギングにはいくつか種類と方法がありますが、Amazon CloudWatch Logs は他の AWS サービスのログを見るときにも日々アクセスするため、なんだかんだ言うものの慣れているというのと、設定が簡単なので使いやすいです。

ですが、Amazon API Gateway に Amazon CloudWatch Logs に書き込みを許可する IAM ロールはその AWS アカウント共通の設定 なので、そのアカウントで最初に設定すると以後気にしなくなりますし、そもそも最初から設定されていたアカウントで作業する場合は何もすることがありません。そのため、私は新しい AWS アカウントで作業するときに必ずこの設定を忘れます。思い出すタイミングは、Amazon API Gateway のログ設定を有効にしようとしてエラーになるときです。

以下、備忘のため設定方法を書き落としておきます。

設定方法

まずは公式ドキュメントから。

 

IAM ロールを作った後は、AWS マネジメントコンソールの以下の画面で IAM ロールを登録するだけです。IAM ロールはアカウント共通ですが、この設定はリージョンごとに必要です。

 

一応、AWS CloudFormation テンプレートにも落とし込んでおいたので、これを一発流すだけでも一通り設定できます。ただし、1リージョン限定です。

AWSTemplateFormatVersion: 2010-09-09
Description: The CloudFormation template that creates an IAM Role and an account setting to push CloudWatch Logs from API Gateway. This setting is shared in your AWS account.

Resources:
# ------------------------------------------------------------#
# API Gateway CloudWatchLogs Invocation Role (IAM)
# ------------------------------------------------------------#
  ApigCloudWatchLogsInvocationRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub ApigCloudWatchLogsInvocationRole-${AWS::AccountId}
      Description: This role allows all API Gateways to invoke CloudWatch Logs.
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
              - apigateway.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs

  ApigAccountSettingCloudWatchLogs:
    Type: AWS::ApiGateway::Account
    Properties:
      CloudWatchRoleArn: !GetAtt ApigCloudWatchLogsInvocationRole.Arn
    DependsOn:
      - ApigCloudWatchLogsInvocationRole

 

まとめ

いかがでしたでしょうか?

このように AWS にはアカウント単位の共通設定がたまにあるので、管理方法も含めて気を付けていきましょう。

本記事が皆様のお役に立てれば幸いです。

著者について
広野 祐司

AWS サーバーレスアーキテクチャを駆使して社内クラウド人材育成アプリとコンテンツづくりに勤しんでいます。React で SPA を書き始めたら快適すぎて、他の言語には戻れなくなりました。サーバーレス & React 仲間を増やしたいです。AWSは好きですが、それよりもフロントエンド開発の方が好きでして、バックエンド構築を簡単にしてくれたAWSには感謝の気持ちの方が強いです。
取得資格:AWS 認定は13資格、ITサービスマネージャ、ITIL v3 Expert 等
2020 - 2024 Japan AWS Top Engineer 受賞
2022 - 2024 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS Amplify / AWS AppSync / Amazon Cognito / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする
クラウドに強いによるエンジニアブログです。
SCSKは専門性と豊富な実績を活かしたクラウドサービス USiZE(ユーサイズ)を提供しています。
USiZEサービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。
AWSアプリケーション開発クラウドソリューション運用・監視
シェアする
タイトルとURLをコピーしました