UrlFetchApp.fetch Google 电子表格无法连接 AWS 后端网络服务

UrlFetchApp.fetch on Google Spreadsheets cannot connect AWS backend webservice

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

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 天前运行良好。然后奇怪的事情发生了。当我们 运行 来自 'Script Editor' 代码的电子表格背后的脚本时 工作正常并成功请求我们的网络服务 return。但是当通过菜单项调用完全相同的代码时,它什么也没做。经过长时间令人沮丧的调查后,我们发现请求甚至没有到达我们的服务器(还有许多其他古怪的症状,比如 'Execution Transcript' 上只有最后一个日志命令可见,尽管应该有很多其他的)。然后我们尝试用从任何 ip 接受但到特定端口的规则替换安全组,一切都再次正常工作。

这是 link 在 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 并观察到当我们 运行 来自 'Script Editor' 请求的代码来自 66.102.7.156 (以及来自类似的 ips,在 66.102.0.0/20 中),当从电子表格中的菜单项调用代码时,请求是从 72.14.199.55 发出的(以及来自 72.14.192.0/18 中的类似 ip)。这个好像是有问题的ip 运行ge。

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

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