一、API Gateway没有成功生成日志现象
在API Gateway上,新配置好的一个接口,打开日志功能后,发现并未生效,日志没有输出到CloudWatch的Log Groups中。现象如下。
打开API Gateway的某接口的CloudWatch日志的开关已经打开。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-01.png)
检查CloudWatch Log Groups,点击左侧的Log groups
菜单,可看到并未发现对应的日志。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-02.png)
这一问题是由于API Gateway没有配置正确的IAM Role导致的。点击API Gateway左下角的Settings
设置菜单,可看到里边的CloudWatch log role ARN
是没有正确配置。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-03.png)
解决办法是为API Gateway配置正确的IAM Role。
二、解决办法
1、配置API Gateway生成CloudWatch所需要的IAM Role
进入IAM服务界面,点击左侧的Role
菜单,点击Create role
按钮。
进入创建IAM Role向导的第一步,在页面下方选择API Gateway
,然后点击右下角下一步按钮。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-04.png)
向导第二步的Add permissions
界面,可看到IAM向导自动带出了一个名为AmazonAPIGatewayPushToCloudWatchLogs
的Policy。这个策略就是稍后需要用的。这里不需要修改,直接点击右下角下一步按钮继续。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-05.png)
在向导最后一步,输入新建的IAM Role的名称,例如API-Gateay-Log-Role
。这里主要不能用空格。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-06.png)
创建IAM Role后,点击其名称,查看这个新创建的Role的ARN,将其复制下来。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-07.png)
接下来返回到API Gateway的配置。
2、将IAM Role应用到API Gateway
在API Gateway的Settings
界面,填写上刚才复制下来的ARN,然后点击Save
按钮。主要点击按钮后页面不会发生跳转,确认点击后就已经是生效了。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-08.png)
3、检查日志是否生成成功
此时对API Gateway接口发起访问。然后稍后来检查是否生成了日志。
进入CloudWatch的Log Groups,可看到在修改配置后,里边生成了新的Log Groups,点击查看之。如下截图。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-09.png)
从CloudWatch Log Groups中可以看到,API Gateway正常生成了日志。
![](https://blogimg.bitipcman.com/workshop/APIGW/log/apigw-log-10.png)
三、参考文档
Permissions for CloudWatch logging:
全文完。