【问题标题】:Restrict one of public api endpoinds for aws ec2 and lambda限制 aws ec2 和 lambda 的公共 api 端点之一
【发布时间】:2021-06-28 04:37:56
【问题描述】:
我的基础架构在 AWS 上。有 ec2 作为后端服务器,一个 lambda 向这个名为“.../utility”的端点上的 ec2 后端代码发送请求。这个“.../utility”端点对互联网开放。
那么,如何在 Internet 上隐藏“.../utility”端点以防止公共访问,而其他后端端点却保持原样?这样 lambda 就可以私下向 AWS 内部的“.../utility”发送请求?
【问题讨论】:
标签:
amazon-web-services
amazon-ec2
aws-lambda
backend
amazon-vpc
【解决方案1】:
您使用什么后端在 EC2 实例上托管 REST API?
例如,如果使用 Go,您可以创建一个仅允许来自特定 IP 的请求的函数。
package main
import (
"github.com/valyala/fasthttp"
"github.com/Ferluci/fast-realip"
)
func realipHandler(ctx *fasthttp.RequestCtx) {
clientIP := realip.FromRequest(ctx)
if clientIP == IP_YOU_WANT_ONLY {
// return stuff
}
else {
// 403 Unauthorized
}
}
这个概念可以应用于任何语言或API。
您还可以发送包含特定令牌的标头供您的 API 读取。如果请求中不包含带有您的特定令牌的标头。返回 403 Unauthorized