回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个非常基本的<code>Python</code>代码,用于检查负载平衡器DNS上的端口阵列是否打开。因此,我使用常规的<code>SOCKET</code>来检查它。当我尝试在本地机器上执行代码时,它运行良好,并给出了预期的输出。当我试图在Lambda上部署相同的逻辑时,我得到了一个超时错误</p>
<p>我的本地代码:</p>
<pre><code>import socket
DNS = ['loadbalancer-dns.elb.amazonaws.com']
PORT = [8099,9087,10041,10004,5001,3001,4001,10010,8085,9050,8088,8081,10041,8086,8072,10025,20026,10006,9098,9099,10005,8070]
for iDNS in DNS:
for iport in PORT:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
output = sock.connect_ex((iDNS,iport))
if output == 0:
print(f'Port {iport} is open on {iDNS}')
else:
print(f'Port {iport} is closed on {iDNS}')
sock.close()
</code></pre>
<p>我的Lambda函数代码:</p>
<pre><code>import json
import boto3
import socket
PORT = [8099,9087]
DNS = ['loadbalancer-dns.elb.amazonaws.com']
def lambda_handler(event, context):
try:
for iDNS in DNS:
for iport in PORT:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
output = sock.connect_ex((iDNS,iport))
if output == 0:
print(f'Port {iport} is open on {iDNS}')
else:
print(f'Port {iport} is closed on {iDNS}')
sock.close()
except:
print('Task timed out')
</code></pre>
<p>在Lambda中,我的Python版本是<code>Python 3.8</code>,我的<code>Timeout</code>值设置为1分30秒</p>