首先,我对AWS很陌生。以下是我想要达到的目标:
因此,现在我有了一个专用子网,其endpoint允许HTTP(S)流量。该endpoint具有某些(专用)DNS名称,(可能)也具有专用IP(找不到)
现在我想要添加一个API网关来前面的一些AWS lambda。我创建所述API,并将其作为endpoint类型->Private
下面是:正式文档将API网关“链接”到VPCendpoint的“唯一”方法是添加资源策略。所以我输入以下内容
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<REGION>:<MY ID>:<API GATEWAY ID>/*/*/<MY RESOURCE>",
"Condition": {
"StringNotEquals": {
"aws:sourceVpce": "<VPC ENDPOINT ID>"
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<REGION>:<MY ID>:<API GATEWAY ID>/*/*/<MY RESOURCE>"
}
]
}
为了完整起见,这里是我的lambda(Python3.6):
from __future__ import division
def lambda_handler(event, context):
return {
"statusCode":200,
"headers": {"Content-Type": "application/json" },
"body" : "It work!"
}
最后是问题:
调用这个REST API的URL是什么!API网关(在lamdba控制台中)告诉我:
https://<API GATEWAY ID>.<REGION>.amazonaws.com/<MY STAGE>/<MY RESOURCE>
好的!让我们对公共子网中的EC2实例调用该URL:APIURL I ssh,并运行以下操作:
curl https://$APIURL
curl https://vpce-XXXXXXX-XXXX.execute-api.REGION.vpce.amazonaws.com/<MY STAGE>/<MY RESOURCE>
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<REGION>:<MY ID>:<API ID>/*/*/<MY RESOURCE>"
}
]
我做错了什么?很抱歉我发了这么长的帖子。
在api部署到某个阶段之前,策略角色更新不会生效。
https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-create-attach.html
如果在API创建后更新资源策略,则需要部署API以在附加更新的策略后传播更改。
我的VPC中有Public和Pvt子网。我在Pvt子网上有一些运行在EC2上的服务,需要通过外部/移动资源访问。我如何做到这一点-是VPCLink和NLB的方式来做到这一点,还是任何其他方式,创建一些访问点在公共子网(??)。Lambda似乎是答案(现在AWS中几乎所有的东西)--甚至不确定那种访问对于Pvt子网中的资源是如何工作的。 同样,同一个Pvt子网可以访问外部资源(在AWS之外)-我如何
如何配置API将请求路由到NLB上的特定目标组?在VPC链接的集成点中,我只看到指定VPC链接和endpoint的选项。如果是endpoint,要路由到特定目标组的endpointURL的格式是什么? 还是我必须为每个微服务创建一个NLB?
AWS文件说, 私有API不支持自定义域名。 来源:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html 这到底是什么意思?我可以将自定义域名附加到私有API。 然而,我面临着SSL证书的问题。
我正在尝试设置一个专用AWS API网关,并从笔记本电脑连接到它。笔记本电脑驻留在一个直接连接到专用VPC的网络中。为此,我使用AWS提供的玩具示例“PetStore”API。 根据本指南: 为我的VPC建立了一个API网关服务endpoint(禁用私有DNS) 假设: AWS账号:123456789012 要调用API,我调用以下cURL命令: 这就是结果: 这里有一个我不确定它是从哪里来的。而
换句话说,我的API网关将使用API网关中定义的相同的资源处理对的请求和对的另一个请求,而不必在API网关中定义和资源。
我目前在lambda函数和API网关方面遇到了问题。我已经在API网关中启用了代理集成,以便返回Lambda函数的状态代码。现在我有一个问题,调用根本没有执行。错误图片 如果我测试Lambda,一切正常,数据库中的条目将被执行。不通过API网关。 我有什么问题? 非常感谢你的帮助! 测验 编辑: 我将此作为IAM政策添加: 但它仍然带来这个错误: