elasticsearch,aws-lambda,amazon-vpc,Python,Amazon Web Services,elasticsearch,Aws Lambda,Amazon Vpc" /> elasticsearch,aws-lambda,amazon-vpc,Python,Amazon Web Services,elasticsearch,Aws Lambda,Amazon Vpc" />

Python 索引到elasticsearch时aws lambda超时

Python 索引到elasticsearch时aws lambda超时,python,amazon-web-services,elasticsearch,aws-lambda,amazon-vpc,Python,Amazon Web Services,elasticsearch,Aws Lambda,Amazon Vpc,我正在尝试使用一个简单的lambda函数将事件索引到elasticsearch中 我的elasticsearch在VPC后面,lambda函数也在后面。子网和安全组都是相同的。 我确信 我的ES客户如下所示: es_host = 'vpc-somethingsomething.eu-west-1.es.amazonaws.com' es = Elasticsearch( hosts=[{'host': es_host, 'port': 443}], http_au

我正在尝试使用一个简单的lambda函数将事件索引到elasticsearch中


我的elasticsearch在VPC后面,lambda函数也在后面。子网和安全组都是相同的。 我确信

我的ES客户如下所示:

es_host = 'vpc-somethingsomething.eu-west-1.es.amazonaws.com'
es = Elasticsearch(
        hosts=[{'host': es_host, 'port': 443}],
        http_auth=awsauth,
        use_ssl=True,
        verify_certs=True,
        connection_class=RequestsHttpConnection
    )
我确信ES主机以这种方式是正确的,否则会出现“无法建立新连接”错误

# key = parsing_key_from_event()
print("the record being indexed: ", body)
res = es.index(index='my-index-name', id=key, body=body)
print("index response: ", res)
我看到第一张打印的是代表我的索引模型的正确dict。我无法查看最后一次打印,因为es.index确实超时。索引的名称和键被删除,但在实际设置中是正确的

我分配给lambda函数的角色启用了elasticsearch的god模式,并建议允许EC2

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "dynamodb:*",
                "es:*"
            ],
            "Resource": "*"
        }
    ]
}

有人知道为什么在提供了所有这些信息的情况下es.index timeout吗?

“子网和安全组都是相同的。”在同一个安全组中没有任何意义,除非您还在安全组中创建一个允许同一安全组的其他成员访问的规则。请在问题中包括您的实际安全组配置。您是对的!为同一安全组添加入站规则解决了此问题。谢谢你的评论!“子网和安全组都是相同的。”在同一安全组中没有任何意义,除非您还在安全组中创建一条规则,允许同一安全组的其他成员进行访问。请在问题中包括您的实际安全组配置。您是对的!为同一安全组添加入站规则解决了此问题。谢谢你的评论!