将API Gateway的Rest接口日志输出到CloudWatch Log Groups

一、API Gateway没有成功生成日志现象

在API Gateway上,新配置好的一个接口,打开日志功能后,发现并未生效,日志没有输出到CloudWatch的Log Groups中。现象如下。

打开API Gateway的某接口的CloudWatch日志的开关已经打开。如下截图。

检查CloudWatch Log Groups,点击左侧的Log groups菜单,可看到并未发现对应的日志。如下截图。

这一问题是由于API Gateway没有配置正确的IAM Role导致的。点击API Gateway左下角的Settings设置菜单,可看到里边的CloudWatch log role ARN是没有正确配置。如下截图。

解决办法是为API Gateway配置正确的IAM Role。

二、解决办法

1、配置API Gateway生成CloudWatch所需要的IAM Role

进入IAM服务界面,点击左侧的Role菜单,点击Create role按钮。

进入创建IAM Role向导的第一步,在页面下方选择API Gateway,然后点击右下角下一步按钮。如下截图。

向导第二步的Add permissions界面,可看到IAM向导自动带出了一个名为AmazonAPIGatewayPushToCloudWatchLogs的Policy。这个策略就是稍后需要用的。这里不需要修改,直接点击右下角下一步按钮继续。如下截图。

在向导最后一步,输入新建的IAM Role的名称,例如API-Gateay-Log-Role。这里主要不能用空格。如下截图。

创建IAM Role后,点击其名称,查看这个新创建的Role的ARN,将其复制下来。如下截图。

接下来返回到API Gateway的配置。

2、将IAM Role应用到API Gateway

在API Gateway的Settings界面,填写上刚才复制下来的ARN,然后点击Save按钮。主要点击按钮后页面不会发生跳转,确认点击后就已经是生效了。如下截图。

3、检查日志是否生成成功

此时对API Gateway接口发起访问。然后稍后来检查是否生成了日志。

进入CloudWatch的Log Groups,可看到在修改配置后,里边生成了新的Log Groups,点击查看之。如下截图。

从CloudWatch Log Groups中可以看到,API Gateway正常生成了日志。 

三、参考文档

Permissions for CloudWatch logging:

https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html#set-up-access-logging-permissions

全文完。