gpt4 book ai didi

amazon-web-services - 具有无服务器框架的私有(private) API 网关

转载 作者:行者123 更新时间:2023-12-03 17:28:40 26 4
gpt4 key购买 nike

我在 AWS VPC(10.0.0.0/16) 中有我的内部网络,我想在这个私有(private)网络中创建 AWS API Gateway,因此没有公共(public)主机名/ips。

这是我尝试过的

service: apollo-lambda1
provider:
name: aws
runtime: nodejs8.10
role: arn:aws:iam::xxx:role/admin-api-lambda-role
region: ap-southeast-1
private: true
vpc:
securityGroupIds:
- sg-xxxxx
subnetIds:
- subnet-xxx

sg-xxxxx 是一个安全组,只允许来自 10.0.0.0/16 的 ips。它没有帮助。

我也尝试添加,但它仍然向世界公开了一个公共(public) IP ......
resourcePolicy:
- Effect: Allow
Principal: "*"
Action: execute-api:Invoke
Resource:
- execute-api:/*/*/*
Condition:
IpAddress:
aws:SourceIp:
- "10.0.0.0/16"

UPD:试过这个组合,没有成功。现在无法解析 dns 名称
endpointType: PRIVATE
resourcePolicy:
- Effect: Allow
Principal: '*'
Action: execute-api:Invoke
Resource:
- execute-api:/*/*/*
Condition:
IpAddress:
aws:SourceIp:
- some ip here

最佳答案

我知道自从提出这个问题以来已经有一段时间了,但我还是想写一个答案。

  • 安全组永远不会帮助您阻止 API 的外部访问。
  • 如果要阻止外部访问,可以通过 ip 阻止资源策略,或者在 API GW 之上创建 WAF。
  • 您还可以使用带有限制的 PRIVATE 端点和 vpc 端点。

  • 使用资源策略:
    provider:
    name: aws
    runtime: nodejs12.x
    region: us-west-2
    stage: dev
    resourcePolicy:
    - Effect: Allow
    Principal: "*"
    Action: execute-api:Invoke
    Resource:
    - execute-api:/*/*/*
    Condition:
    IpAddress:
    aws:SourceIp:
    - "10.0.0.0/16"
    将私有(private)终端节点与资源策略和 VPC 终端节点一起使用
    provider:
    name: aws
    runtime: nodejs12.x
    region: us-west-2
    stage: dev
    endpointType: PRIVATE
    vpcEndpointIds:
    - vpce-XXXXX
    resourcePolicy:
    - Effect: Allow
    Principal: "*"
    Action: execute-api:Invoke
    Resource:
    - execute-api:/*/*/*
    Condition:
    IpAddress:
    aws:SourceIp:
    - "10.0.0.0/16"
    在编写此解决方案的那一刻,我使用的是第一个带有额外 IP 地址的示例,因为这是我在没有 QA 团队的情况下测试来自固定 IP 地址的 endoints 的解决方案。我希望这个解决方案对某人有所帮助。

    关于amazon-web-services - 具有无服务器框架的私有(private) API 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195895/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com