首页 > 解决方案 > 索引到弹性搜索时的aws lambda超时

问题描述

我正在尝试一个简单的 lambda 函数将事件索引到弹性搜索中。

我的 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 启用了上帝模式,并建议允许 EC2 使用。

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

鉴于所有这些信息,任何人都知道为什么 es.index 超时?

标签: pythonamazon-web-serviceselasticsearchaws-lambdaamazon-vpc

解决方案


推荐阅读