我在 AWS 的 VPC 内有一个 lambda 函数。我想附加 http 处理程序(函数 URL)。
问题是,如果我启用函数 URL,那么它会创建一个公共端点。
我不想使用的替代品
有没有一种方法可以创建 AWS Lambda 函数 URL,但它只能在 VPC 内访问而不涉及 AWS SKD? (就像
wget URL
)
在我们的组织中,我们最终采用了仅供内部使用的 ALB,并启用了 MultiValueQueryStringParameters 将数据传递到 Lambda 函数并执行它。这是我能找到的提供仅供内部使用的 URL 的唯一方法,我可以使用安全组进一步保护该 URL。我不知道如何使 Lambda URL 仅供内部使用。
我研究了类似的用例,最终我使用了 SDK 中的直接 lambda Invoke,使用 RequestResponse InvocableType 来获取响应负载。这适合我的需求,但可能不适合您的情况。
InvokeResponse response = await lambdaClient.InvokeAsync(new InvokeRequest() {
FunctionName = "LambdaFunctionName",
InvocationType = InvocationType.RequestResponse,
Payload=data
});
虽然有点晚了,但无论如何。 函数 URL 始终是公开的,并且无法按照文档所述将其设为私有(至少在发布此内容时):
您只能通过公共互联网访问您的函数 URL。虽然 Lambda 函数确实支持 AWS PrivateLink,但函数 URL 不支持。
您可以在此处找到更多信息https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html。
还有另一种方法可以使用 VPC Lattice 从 VPC 私下调用 Lambda 函数,但这适用于拥有多个服务而不是临时 Lambda 的架构。但是,没有什么可以阻止您将其仅用于一个 Lambda。
希望有帮助。