我有一个lambda function
发送以下请求,以获取该区域内所有实例的ID:
ec2_client = boto3.client('ec2', os.environ['region'])
response = ec2_client.describe_instances(Filters=[{'Name':'instance-state-name', 'Values': ['pending', 'running','shutting-down','stopping','stopped'],}])
lambda还会将获取请求发送到安装在VPC内的API REST,并且该API尚未向互联网开放:
resp = requests.get(os.environ['apidsi']+'/persons/emails')
我将Lambda函数放在VPC中,以便可以查询API,但是当我这样做时,lambda超时并且它不能访问其他VPC内的EC2实例。 IAM角色具有所有必需的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ecs:*",
"ec2:*",
"s3:*",
"autoscaling:*",
"cloudwatch:*",
"dynamodb:*"
],
"Resource": "*"
}
]
}
我想安全小组也可以。总结一下:
API REST
但不能访问VPC资源,但是lambda超时了如何解决这个问题?
有关信息:我为Lambda函数分配了一个公共子网。该公共子网附加了Internet Gateway
,并且与托管API REST的实例位于同一VPC中。