作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的 AWS Neptune 集群,有一个写入器,没有只读副本。我使用该选项为它创建了一个新的 VPC,并且也自动为它创建了两个安全组。
我还有一个调用 Nepture 集群端点的 Lambda。我已经使用 Neptune 集群的 VPC 配置了 Lambda,指定了它的所有子网和上面提到的两个安全组。在我从 AWS 控制台执行 VPC 配置时自动分配入站和出站规则后,我没有手动修改它们(只需完成这些步骤)。
Lambda 用 Python 编写并使用 requests
使用 AWS Singature V4 进行 HTTPS 调用的库。 Lambda 的执行角色有 NeptuneFullAccess
以及允许为 Lambda 配置 VPC 的内联策略(已完成,因此该策略有效)。
Lambda 在端口 8182 上调用 Neptune 集群的终端节点,其中集群的名称和 ID 已编辑:
https://NAME.cluster-ID.us-east-1.neptune.amazonaws.com:8182
{
"errorMessage": "2020-05-20T21:26:35.066Z c8ee70ac-6390-48fd-a32e-36f80d58a24e Task timed out after 3.00 seconds"
}
Choose existing
安全组的选项,而不是
Create new
. (我想我之前很困惑,因为我正在创建一个全新的 VPC,那么安全组怎么可能已经存在?但是向导只是假设届时将创建
default
安全组。)
{
"errorType": "Runtime.ExitError",
"errorMessage": "RequestId: 48e3b4fb-1b88-48d3-8834-247dbb1a4f3f Error: Runtime exited without providing a reason"
}
{
"requestId": "b8b91c18-34cd-c5f6-9103-ed3357b9241e",
"code": "BadRequestException",
"detailedMessage": "Bad request."
}
{
"host": "NAME.cluster-ID.us-east-1.neptune.amazonaws.com:8182",
"method": "GET",
"query_type": "status",
"query": ""
}
[Errno 111] Connection refused'
错误又回来了。然而,我注意到一件奇怪的事情:我有一些孤立的网络接口(interface),从 Lambda 与现已删除的 Neptune 集群的 VPC 相关联开始。网络接口(interface)标记为
in use
,但是,我无法分离和删除它们,即使使用
Force detachment
选项。获取
You are not allowed to manage 'ela-attach' attachments
错误。
{
"errorMessage": "HTTPSConnectionPool(host='NAME.cluster-ID.us-east-1.neptune.amazonaws.com', port=8182): Max retries exceeded with url: /status/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f1f9f98c310>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"errorType": "ConnectionError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 71, in lambda_handler\n return make_signed_request(host, method, query_type, query)\n",
" File \"/var/task/lambda_function.py\", line 264, in make_signed_request\n r = requests.get(request_url, headers=headers, verify=False, params=request_parameters)\n",
" File \"/var/task/requests/api.py\", line 76, in get\n return request('get', url, params=params, **kwargs)\n",
" File \"/var/task/requests/api.py\", line 61, in request\n return session.request(method=method, url=url, **kwargs)\n",
" File \"/var/task/requests/sessions.py\", line 530, in request\n resp = self.send(prep, **send_kwargs)\n",
" File \"/var/task/requests/sessions.py\", line 643, in send\n r = adapter.send(request, **kwargs)\n",
" File \"/var/task/requests/adapters.py\", line 516, in send\n raise ConnectionError(e, request=request)\n"
]
}
最佳答案
需要检查的几件事:
request
库不进行 SigV4 签名,因此您需要遵循类似于此处列出的程序 [2]。 关于amazon-web-services - 从 Lambda 连接到 Neptune 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61923268/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!