Google Spreadsheets上的UrlFetchApp.fetch无法连接AWS后端网络服务

时间:2015-04-14 01:54:35

标签: security amazon-web-services amazon-ec2 google-apps-script

我们在AWS上有一个EC2实例,我们将后端服务部署到。我们首先使用Google Spreadsheets(使用Google Apps脚本编写脚本)通过部署在我们服务器上的Web服务来展示我们的后端。我们有一个特定的端口,https(使用自签名证书)协议用于为飞行时加密的Web服务提供服务。我们已经设置了安全组(基本上是防火墙条目组),其中包括我们的Web服务的特定入口端口的以下CIDR范围:

64.18.0.0/20 
64.233.160.0/19 
66.102.0.0/20 
66.249.80.0/20 
72.14.192.0/18 
74.125.0.0/16 
173.194.0.0/16 
207.126.144.0/20 
209.85.128.0/17 
216.58.192.0/19 
216.239.32.0/19 

https://developers.google.com/apps-script/guides/jdbc#setup_for_google_cloud_sql

中所述

这个设置工作正常,直到5天前。然后发生了一些奇怪的事。当我们从“脚本编辑器”代码运行电子表格后面的脚本时 工作正常,请求我们的webservice成功返回。但是当通过菜单项调用完全相同的代码时,它没有做任何事情。经过长期令人沮丧的调查,我们发现请求甚至没有到达我们的服务器(还有许多其他古怪的症状,例如只有上一个日志命令在'执行记录'中可见,即使应该有许多其他人)。然后我们尝试用从任何ip接受的规则替换安全组但是到特定端口一切都正常工作。

以下是google-apps-script-issues页面中看似相关问题的链接: https://code.google.com/p/google-apps-script-issues/issues/detail?id=4679#c8

我们运行tcpdump tcp port <port> -i eth0 -vv并观察到当我们从“脚本编辑器”运行代码时,请求来自66.102.7.156(来自类似的ips,位于66.102.0.0/20),代码时从电子表格中的菜单项调用请求来自72.14.199.55(来自类似的ips,位于72.14.192.0/18)。这个似乎是有问题的IP范围。

我的问题是,为什么当请求源正确包含在防火墙规则中时,一个ips块不起作用并且当端口上的ip限制解除时开始工作(源ip 0.0.0.0/0 )?它是AWS中安全组的错误吗?或者我们做错了什么?此外,如果我们的方法在任何方面都不充分,那么我们将非常感谢其他解决方案或建议。

1 个答案:

答案 0 :(得分:1)

根据您链接的issues,Apps脚本中存在导致此行为的错误。该错误现已修复。