Amazon web services 公共子网中的实例,但cfn init从专用子网中通过VPC端点失败

Amazon web services 公共子网中的实例,但cfn init从专用子网中通过VPC端点失败,amazon-web-services,amazon-ec2,amazon-cloudformation,Amazon Web Services,Amazon Ec2,Amazon Cloudformation,让我们保持简单 我有一个3公共子网和3私有子网。有一个堡垒主机,只有一个,分配给一个公共子网。私有子网(全部3个)与CloudFormation VPC端点相连。现在有趣的是,当我启动bastion stack时,它试图通过cfn init做一些事情,但失败了。它尝试连接到与上述VPC端点链接的ENI的IP 如果我: 除去上述端点,堡垒瞬间堆叠起来 为端点的sec组添加一个SecurityGroupIngress条目,该端点允许来自CidrIp的所有入口连接,作为VPC的cidr,bastio

让我们保持简单

我有一个3公共子网3私有子网。有一个堡垒主机,只有一个,分配给一个公共子网。私有子网(全部3个)与CloudFormation VPC端点相连。现在有趣的是,当我启动bastion stack时,它试图通过cfn init做一些事情,但失败了。它尝试连接到与上述VPC端点链接的ENIIP

如果我:

  • 除去上述端点,堡垒瞬间堆叠起来
  • 为端点的sec组添加一个SecurityGroupIngress条目,该端点允许来自CidrIp的所有入口连接,作为VPC的cidr,bastion会立即堆叠起来
现在!为什么是:|。 这没有任何意义。在这个世界上,一条通向端点的路由是如何进入与公共子网链接的路由表的?以下是公用子网的路由表:

172.36.0.0/16   local   active
0.0.0.0/0       igw-?   active
和3个不同的专用子网路由表

172.36.0.0/16 local
0.0.0.0/0 nat-1 nat-2 nat-3
pl-6ea54007 vpce-s3
(实际上所有3个看起来都一样,VPC有本地,有3个nat,因此nat-1到nat-3,这里的端点是S3)

再次重申:

  • 堡垒与公共子网相关联,具有公共IP和到Internet网关的路由
  • 所述VPCEndpoint链接到专用子网(非公共)
  • 有什么想法吗

    日志、文件等

    用户数据:

              #!/bin/bash -xe
              yum update -y
              yum update -y aws-cfn-bootstrap || true
    
              trap '/opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --region ${AWS::Region} --resource Bastion' ERR
    
              /opt/aws/bin/cfn-init --verbose \
                --stack ${AWS::StackName} \
                --resource Bastion \
                --region ${AWS::Region}
    
              sleep 1
              /opt/aws/bin/cfn-signal \
                -e 0 \
                --stack ${AWS::StackName} \
                --resource Bastion \
                --region ${AWS::Region}
    
    日志来自
    /var/log/cfn init.log

    2020-10-02 05:18:43,957 [DEBUG] CloudFormation client initialized with endpoint https://cloudformation.eu-central-1.amazonaws.com
    2020-10-02 05:18:43,958 [DEBUG] Describing resource Bastion in stack bastion-stack
    2020-10-02 05:19:43,958 [WARNING] Timeout of 60 seconds breached
    2020-10-02 05:19:43,958 [ERROR] Client-side timeout
    Traceback (most recent call last):
      File "/usr/lib/python2.7/site-packages/cfnbootstrap/util.py", line 162, in _retry
        return f(*args, **kwargs)
      File "/usr/lib/python2.7/site-packages/cfnbootstrap/util.py", line 231, in _timeout
        raise TimeoutError("Execution did not succeed after %s seconds" % duration)
    TimeoutError
    2020-10-02 05:19:43,960 [DEBUG] Sleeping for 0.115700 seconds before retrying
    
    现有内点:

    所述VPCEndpoint链接到专用子网(非公共)

    对于CloudFormation VPC端点,情况并非如此。我想你把我的想法弄糊涂了

    在您的情况下,当您创建
    CloudFormation VPC端点
    时,您正在创建VPC接口端点,但是,您在问题中指的是
    pl-6ea54007
    路由,该路由用于VPC网关端点(可能是S3)


    因此,
    pl-6ea54007
    是针对VPC网关端点(我猜是S3),而不是针对CloudFormation VPC端点两种端点类型的工作方式不同,接口端点不会在任何路由表中创建任何路由。接口端点具有VPC范围。这意味着任何子网(私有、公共)都可以使用CloudFormation VPC端点,包括您的bastion主机。

    如果有不清楚的地方,请告诉我。老实说,我只是想把它放在野外引起注意。同时也很晚了;-)您的
    pl-6ea54007
    路线将更加具体,因此它将始终被选中。不确定这是否是您要求的?用户数据中有什么?cloud init日志文件(
    /var/log/cloud init output.log
    )中有什么内容?@Marcin this
    pl-6ea54007
    用于S3路由。事实上,我有3个VPC端点(一个是网关,两个是接口类型)链接到私有路由表或私有子网(反过来链接到这些表)。根据@Marcin的回答,整个VPC都可以访问CloudFormation的VPC端点。您已经列出了使其工作的方法(配置安全组)——这样做有问题吗?我实际上有3个端点(上面的答案)。一个用于CloudFormation,一个用于S3,最后一个用于SecretsManager。@kornicameister那么你能澄清一下你写“现在!为什么是这样:|没有任何意义”时的意思吗?对我来说,这是非常有意义的,并且完全按照预期工作。我想知道为什么现在会发生这种情况。实际上,我们正在尝试实现另一种网络设置。我们曾经让每个堆栈定义自己的cidr块、子网和ENPDOINT。但正如你所说,我们很快就发现无法维护几十个不同的Cidr块等等。无论如何,说到这里,当我们这样做的时候,我们没有这个问题。目前,我们有3个共享的私有子网和一个地方,每个服务的端点都处于活动状态,突然公开放置的EC2尝试使用端点?@kornicameister“突然公开放置的EC2尝试使用端点?”-哪个端点?CloudFormation端点?@kornicameister CloudFromation是接口端点,而不是网关端点。接口端点具有VPC作用域。任何子网都将连接到它,无论是私有的还是公共的。