我正在尝试从AWS Lambda(Java)连接到RDS数据库.
我应该从RDS安全组规则中启用哪个IP?
amazon-web-services amazon-vpc aws-lambda aws-security-group
我正在尝试从我的AWS Lambda发出http请求,但它超时了.
我的代码看起来与此类似:
import requests
def lambda_handler(event, context):
print('Im making the request')
request.get('http://www.google.com')
print('I recieved the response')
Run Code Online (Sandbox Code Playgroud)
但是当我测试这个时,我会超时.
输出是
Im making the request
END RequestId: id
REPORT RequestId: id Duration: 15003.25 ms Billed Duration: 15000 ms Memory Size: 128 MB Max Memory Used: 18 MB
2016-04-08T20:33:49.951Z id Task timed out after 15.00 seconds
Run Code Online (Sandbox Code Playgroud)
所以我知道问题不是找不到请求包,而是运行我的python代码.我只想弄清楚为什么它会超时.
我有一个需要与私有 VPC 中的 EC2 实例“本地”通信的 lambda。API 密钥存储在 Secrets Manager 中。
使用 Secrets Manager 提供的默认代码和必要的 IAM 角色,我可以从我的 Lambda 中的 Secrets Manager 读取 API 密钥:
# Use this code snippet in your app.
# If you need more information about configurations or implementing the sample code, visit the AWS docs:
# https://aws.amazon.com/developers/getting-started/python/
import boto3
import base64
from botocore.exceptions import ClientError
def get_secret():
secret_name = "MYSECRET"
region_name = "ap-southeast-2"
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name …Run Code Online (Sandbox Code Playgroud) amazon-ec2 amazon-web-services amazon-vpc aws-lambda aws-secrets-manager
我有一个Lambda函数,我需要从中进行外部API调用.我已将Lambda函数添加到安全组,VPC和2个子网,它为我提供了以下文本:
启用VPC后,您的Lambda函数将失去默认的Internet访问权限.如果您的功能需要外部Internet访问,请确保您的安全组允许出站连接,并确保您的VPC具有NAT网关.
我进入VPC,创建一个NAT网关(我让AWS创建一个EIP),将它附加到我的lambda函数的一个子网上.
出于调试目的,我的安全组出站功能设置为所有流量/所有目的地(0.0.0.0/0).此VPC的网络ACL也设置为此(具有5个子网,包括具有NAT网关的子网):
100 | ALL Traffic | ALL | ALL | 0.0.0.0/0 | ALLOW
Run Code Online (Sandbox Code Playgroud)
具有相同2个子网的路由表位于VPC上,0.0.0.0/0路由设置为以NAT网关为目标.
VPC上还有一个带有3个其他子网的不同路由表,0.0.0.0/0路由设置为目标Internet网关.
两个路由表都具有相同的local目标IP(VPC的IP).
我得到的错误是:
{ Error: connect ETIMEDOUT x.x.x.x:443
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: 'x.x.x.x',
port: 443 }
Run Code Online (Sandbox Code Playgroud)
我正在运行的节点代码在我的桌面节点环境中工作,POST调用在postman中工作,所以我很确定这是我的AWS配置的问题.
我一直在使用这种情况作为资源:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html