标签: aws-nat-gateway

单个 NAT 网关可以跨越多个可用区吗?

当我配置 NAT 网关时,我必须选择一个子网,因此据我所知,一个 NAT 网关对应一个属于一个可用区的子网。

然后我看到了下面的声明

如果您有多个可用区中的资源并且它们共享一个 NAT 网关,如果 NAT 网关的可用区宕机,其他可用区中的资源将无法访问互联网,要创建独立于可用区的架构,请创建一个 NAT 网关并配置您的路由以确保资源使用同一可用区中的 NAT 网关。

如果我在不同的子网中有多个 EC2,它们如何共享一个 NAT 网关?我理解错了吗?下面是我尝试创建 NAT 网关时看到的屏幕截图

在此处输入图片说明

nat amazon-web-services amazon-vpc aws-nat-gateway

10
推荐指数
1
解决办法
6104
查看次数

如何为在 EC2 模式下在 AWS ECS 集群中运行的容器分配公共 IP

我正在尝试使用服务之间的服务发现来实现多服务 ECS 集群。我正在尝试按照教程创建使用 Amazon ECS CLI 使用服务发现的 Amazon ECS 服务。但是,它不包括完整的工作示例

我所做的是定义两个服务,通过使用定义:

  • docker-compose.yml
  • ecs-params.yml

我可以轻松调出 ECS 集群和这两个服务。一切看起来都不错。但其中一项服务需要公共 IP 地址。所以在相应的ecs-params.yml文件中,我把assign_public_ip: ENABLED. 但是没有分配公共 IP 地址。在 ECS 控制台中,服务详细信息显示Auto-assign public IP DISABLED为 ,对于任务,它列出了私有 IP 地址,没有公有 IP 地址。

不幸的是,根据网络模式任务网络awsvpc的文档,这似乎是不可能的:

该 awsvpc 网络模式不为使用EC2启动类型任务提供任务ENIS与公网IP地址。要访问 Internet,应在配置为使用 NAT 网关的私有子网中启动使用 EC2 启动类型的任务。有关更多信息,请参阅 Amazon VPC 用户指南 中的 NAT 网关。入站网络访问必须来自使用私有 IP 地址的 VPC 内,或从 VPC 内通过负载均衡器路由。在公共子网中启动的任务无法访问 Internet。

问题:如何解决 AWS ECS EC2 启动类型的这种限制?

我不明白为什么 EC2 启动类型不支持公共 IP 地址?或者 - 我是否使用不同的网络模式,然后分配一个公共 …

amazon-web-services amazon-ecs amazon-vpc aws-nat-gateway

7
推荐指数
1
解决办法
7215
查看次数

AWS SSM 会话管理器和 Nat Gateway

我已在私有子网中创建了一个 EC2 实例(即路由表没有附加 Internet 网关)。

附加到私有子网的路由表将 0.0.0.0/0 路由到 NAT 网关。

EC2 实例具有正确的 SSM 角色并显示在 SSM 托管实例列表中。

我可以通过会话管理器在实例上启动会话。

但是,当我从路由表中删除 NAT 网关映射时,会话连接无法连接。

我的理解是 NAT 仅用于传出流量。因此,我假设会话管理器连接是通过内部 AWS 网络而不是公共互联网路由的,因为该实例无法访问。但是我不明白为什么该实例试图通过公共互联网路由流量。我原本预计,要将自身注册为 SSM 托管实例,实例上的 SSM 代理将需要互联网访问。但我不明白为什么会话管理器会要求实例具有互联网访问权限?

谢谢。

amazon-web-services ssm aws-nat-gateway

7
推荐指数
1
解决办法
4559
查看次数

Lambda 函数无法访问 Secrets Manager

我编写了一个 lambda 函数来访问数据库,因此第一步是从 AWS Secrets Manager 获取机密。我有一个私有 VPC 以及与 lambda 函数关联的子网、NAT 网关和安全组。我也有secretsmanager.Secret.grantRead(lambda_exec_role)所以 lambda 应该可以访问 Secrets Manager。

出于某种原因,当我在 API Gateway 中测试它时,我在 CloudWatch 中得到了 "errno": "ETIMEDOUT" 和 "code": "NetworkingError"。从我在 API 中打印的日志来看,获取机密失败了。

我也试图为秘密管理器添加VPC的端点在这里,但仍然得到了同样的错误。

感谢这里的任何人可以帮助我解决这个问题或提供一些提示。

非常感谢!

amazon-web-services amazon-vpc aws-lambda secretsmanager aws-nat-gateway

7
推荐指数
2
解决办法
2962
查看次数

如何通过 Cloud Formation 将弹性 IP 连接到 NatGateway

我正在尝试学习 Aws cloud Formation ,我正在尝试创建 VPC,如图所示。它包含三个公共子网、私有子网、natg​​ateway 和 Internetgateway,以及公共和私有路由表。我试图通过云形成来实现它,但获得弹性 IP 的例外。 我正在尝试学习 Aws cloud Formation ,我正在尝试创建 VPC,如图所示。我已经创建了模板,但是当我尝试在云形成上创建堆栈时,出现错误

"The elastic-ip ID 'xx.xxx.xx.xxx' is malformed (Service: AmazonEC2; Status Code: 400; Error Code: InvalidElasticIpID.Malformed; Request ID: 2e3a9f8c-5a7e-482e-869c-8a0e46a08f27; Proxy: null)"
Run Code Online (Sandbox Code Playgroud)

。我正在尝试将弹性 IP 连接到 NatGateway 并出现上述错误。请指导我该怎么做。

{

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "ExampleEc2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro",
        "ImageId" : "ami-047a51fa27710816e",
        "AvailabilityZone" : "us-east-1a",
        "SecurityGroupIds" : [{
           "Ref":"ExampleSecurityGroup"
        }],
        "SubnetId" : {
           "Ref":"public2A"
        }
      }
    },"ExampleEc2InstancePrivate": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro",
        "ImageId" : "ami-047a51fa27710816e",
        "AvailabilityZone" : "us-east-1a", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation aws-nat-gateway aws-cloudformation-custom-resource

5
推荐指数
1
解决办法
2302
查看次数

尽管按照规则配置了NAT、Internet网关,AWS VPC仍无法访问Internet

我对此有点迷失——我已经关注了AWS文档,但似乎我找不到更多的东西了。情况摘要是,我在 VPC 内有一个 EC2 实例,尽管按照 Amazon AWS 说明为 VPC 设置 NAT,但它无法访问 Internet。详情如下:

  1. 我有一个 VPC,其中有一个子网 (CIDR 10.0.0.0/24) 和一个 EC2 实例(它仅在 VPC 内具有私有 IP 地址,10.0.0.168)

  2. 我创建了一个互联网网关并将其附加到上述 VPC。

  3. 我为入站和出站流量创建了一个网络 ACL,其所有流量允许为 0.0.0.0/0,并将该 ACL 附加到 VPC 的唯一子网。

  4. VPC 子网安全组还允许 0.0.0.0/0 的所有流量进出

  5. 我创建了一个 NAT 网关,它在 VPC 内有一个私有 IP 地址 (10.0.0.95) 和一个公共弹性 IP 地址(假设是 18.154.34.97,但我认为这并不重要)。该 NAT 网关连接到 VPC 的唯一子网。

  6. 我创建了与 VPC 子网 (10.0.0.0/24) 关联的路由表,并包含两个条目:

    Destination     Target
    10.0.0.0/24     local
    0.0.0.0/0       nat-gateway-id
Run Code Online (Sandbox Code Playgroud)
  1. 为了访问 VPC,我创建了一个地址范围为 10.1.0.0/22 的客户端 VPN 终端节点,并将其与正确的 VPN 子网关联。

  2. 我可以使用 OpenVPN 连接到客户端 VPN 终端节点并通过 ssh 进入 EC2 实例。但是,从那时起我无法访问互联网。同样,当连接到此客户端 …

nat amazon-web-services amazon-vpc aws-nat-gateway

5
推荐指数
1
解决办法
5242
查看次数

删除不必要的AWS资源,VPC + NAT网关

我最近通过 CDK 在 AWS 上设置了一个应用程序。该应用程序由一个 Dockerized Nodejs 应用程序组成,该应用程序连接到 RDS 实例,并且还具有 Redis 缓存层。应用程序部署几天后,即使流量很小,成本也比我预期的要高得多。查看成本浏览器后,看起来一半的成本来自 NAT 网关。

在我当前的设置中,我创建了两个 VPC。一个用于应用程序堆栈,另一个用于 CodePipeline。我需要为管道添加一个,因为如果没有它,我在 CodeBuildAction 步骤期间尝试拉取 Docker 映像时会遇到速率限制。

我对网络部分不太满意,但我觉得涉及额外的资源。管道VPC有3个NAT网关和3个EIP。这些最终只是坐在那里等待下一次部署,这似乎是一种巨大的浪费。似乎为 CDK 中附加的 VPC 的每个构造分配了一个新的网关 + EIP。我可以让它重复使用同一个吗?有没有其他方法可以完全添加 VPC 并且不受 Docker 限制速率?

我还发现非常令人惊讶(我可能只是天真),NAT 网关到目前为止与我当前的 Fargate 任务成本同样昂贵。有没有一种替代方案可以满足我的目的,但成本要低一些?

无论如何,这是我的两个堆栈:

// pipeline-stack.ts

import { SecretValue, Stack, StackProps } from "aws-cdk-lib";
import { Construct } from "constructs";
import { Artifact, IStage, Pipeline } from "aws-cdk-lib/aws-codepipeline";
import {
  CloudFormationCreateUpdateStackAction,
  CodeBuildAction,
  CodeBuildActionType,
  GitHubSourceAction,
} from "aws-cdk-lib/aws-codepipeline-actions";
import {
  BuildEnvironmentVariableType,
  BuildSpec,
  LinuxBuildImage,
  PipelineProject,
} from "aws-cdk-lib/aws-codebuild";
import …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-vpc aws-cdk aws-nat-gateway

2
推荐指数
1
解决办法
1427
查看次数

为什么通过Session Manager访问私有EC2实例需要NAT网关?

我创建两个 VPC,每个 VPC 拥有一个私有子网,每个私有子网拥有一个 EC2 实例(具有 IAM 策略“AmazonSSMManagedInstanceCore”的角色)。这两种环境的唯一区别在于是否有 NAT 网关。

我尝试通过会话管理器连接这两个 EC2 实例。具有 NAT 网关的 VPC 中的 EC2 实例可以访问,但其他 EC2 实例无法访问。

问题

  1. 我想会话管理器需要 NAT 网关。它是否正确?
  2. 如果1正确,为什么需要NAT网关?

amazon-ec2 amazon-web-services amazon-vpc aws-session-manager aws-nat-gateway

2
推荐指数
1
解决办法
878
查看次数