我试图在EC2
区域列出所有t2.micro
类型running
的{{1}}实例。我已经用Python(Sydney
)编写了Lambda函数。下面是我的代码:
Python 3.6
我已为Lambda授予了所有必要的权限,包括import json
import boto3
from pprint import pprint
def lambda_handler(event, context):
client = boto3.client("ec2")
response = client.describe_instances(
Filters=[
{
'Name': 'instance-state-name',
'Values': [
'running',
],
},
{
'Name': 'instance-type',
'Values': [
't2.micro',
],
},
{
'Name': 'availability-zone',
'Values': [
'ap-southeast-2',
],
},
],
)
print(response)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
,AmazonEC2FullAccess
和AmazonEC2ReadOnlyAccess
。我将内存调整到AWSLambdaBasicExecutionRole
,并将超时值设置为3GB
。仍然没有运气。任何帮助将不胜感激。
答案 0 :(得分:0)
答案 1 :(得分:0)
问题出在Lambda与使用互联网网关的公共子网相关联。
由于Lambda将通过VPC出站连接,因此没有NAT就无法连接到Internet,这是因为Lambda本身没有被授予公用IP地址,这会阻止Internet网关的功能正常工作。
或者,对于许多服务,您可以改而使用VPC endpoint,在您的情况下(EC2),有一个端点。重要的是要了解,尽管您的EC2实例位于VPC中,但EC2 API操作是针对EC2服务执行的,而不是与VPC的资源进行交互。