限制 aws ec2 和 lambda 的 public api 端点之一
Restrict one of public api endpoinds for aws ec2 and lambda
我的基础设施在 AWS 上。有 ec2 作为后端服务器,一个 lambda 将请求发送到一个名为“.../utility”的端点上的 ec2 后端代码。此“.../utility”端点对互联网开放。
那么我如何才能隐藏“.../utility”端点以防止 public 访问互联网,而其他后端端点保持原样 public?这样 lambda 就可以私下向 AWS 内部的“.../utility”发送请求?
您使用什么后端在 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中。
您还可以发送一个 header,其中包含供您 API 阅读的特定令牌。如果请求不包含带有您的特定令牌的 Header。 Return 403 未授权
我的基础设施在 AWS 上。有 ec2 作为后端服务器,一个 lambda 将请求发送到一个名为“.../utility”的端点上的 ec2 后端代码。此“.../utility”端点对互联网开放。
那么我如何才能隐藏“.../utility”端点以防止 public 访问互联网,而其他后端端点保持原样 public?这样 lambda 就可以私下向 AWS 内部的“.../utility”发送请求?
您使用什么后端在 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中。
您还可以发送一个 header,其中包含供您 API 阅读的特定令牌。如果请求不包含带有您的特定令牌的 Header。 Return 403 未授权