0

内部に数個のAWSリソースを持つVPCを構築しました。私がVPCにいて、VPC内のリソースが互いに通信できるなら、私はインターネットにアクセスできます。たとえば、私はインターネットに通信することができ、VPC内のRDSインスタンスに到達することができるラムダ関数を持っています。ただし、ローカルマシンからRDSインスタンスに接続しようとしているときに問題が発生します。MariaDBに接続できませんVPC内のRDSインスタンス

すべての着信トラフィックを許可するようにVPCSecurityGroupを更新しようとしましたが、動作しません。動作するように思われるのは、NATとは対照的にIGWを使用するようにすべてのルートテーブルを切り替える場合ですが、そうでない場合は優先します。また、ラムダ関数がプライベートサブネットに存在しなければならないことをかなり確信しているので、私はそれを行うことが許可されるのかどうかもわかりません。

vpc.yml

AWSTemplateFormatVersion: 2010-09-09 
Description: VPC Stack 
Resources: 
    Vpc: 
    Type: 'AWS::EC2::VPC' 
    Properties: 
     CidrBlock: 10.0.0.0/16 
     EnableDnsSupport: true 
     EnableDnsHostnames: true 
     InstanceTenancy: default  
    InternetGateway: 
    Type: 'AWS::EC2::InternetGateway' 
    VpcGatewayAttachment: 
    Type: 'AWS::EC2::VPCGatewayAttachment' 
    Properties: 
     VpcId: !Ref Vpc 
     InternetGatewayId: !Ref InternetGateway 
    ElasticIP: 
    Type: 'AWS::EC2::EIP' 
    Properties: 
     Domain: vpc 
    NatGateway: 
    Type: 'AWS::EC2::NatGateway' 
    DependsOn: 
     - VpcGatewayAttachment 
    Properties: 
     AllocationId: !GetAtt 
     - ElasticIP 
     - AllocationId 
     SubnetId: !Ref SubnetAPublic 
    SubnetAPublic: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     AvailabilityZone: !Select 
     - '0' 
     - !GetAZs '' 
     CidrBlock: 10.0.0.0/19 
     MapPublicIpOnLaunch: true 
     VpcId: !Ref Vpc 
    SubnetBPublic: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     AvailabilityZone: !Select 
     - '1' 
     - !GetAZs '' 
     CidrBlock: 10.0.32.0/19 
     MapPublicIpOnLaunch: true 
     VpcId: !Ref Vpc 
    SubnetAPrivate: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     AvailabilityZone: !Select 
     - '0' 
     - !GetAZs '' 
     CidrBlock: 10.0.64.0/19 
     VpcId: !Ref Vpc 
    SubnetBPrivate: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     AvailabilityZone: !Select 
     - '1' 
     - !GetAZs '' 
     CidrBlock: 10.0.96.0/19 
     VpcId: !Ref Vpc 
    RouteTableAPublic: 
    Type: 'AWS::EC2::RouteTable' 
    Properties: 
     VpcId: !Ref Vpc 
    RouteTableBPublic: 
    Type: 'AWS::EC2::RouteTable' 
    Properties: 
     VpcId: !Ref Vpc 
    RouteTableAPrivate: 
    Type: 'AWS::EC2::RouteTable' 
    Properties: 
     VpcId: !Ref Vpc 
    RouteTableBPrivate: 
    Type: 'AWS::EC2::RouteTable' 
    Properties: 
     VpcId: !Ref Vpc 
    RouteTableAssociationAPublic: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref SubnetAPublic 
     RouteTableId: !Ref RouteTableAPublic 
    RouteTableAssociationBPublic: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref SubnetBPublic 
     RouteTableId: !Ref RouteTableBPublic 
    RouteTableAssociationAPrivate: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref SubnetAPrivate 
     RouteTableId: !Ref RouteTableAPrivate 
    RouteTableAssociationBPrivate: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref SubnetBPrivate 
     RouteTableId: !Ref RouteTableBPrivate 
    RouteTableAPrivateInternetRoute: 
    Type: 'AWS::EC2::Route' 
    DependsOn: 
     - VpcGatewayAttachment 
    Properties: 
     RouteTableId: !Ref RouteTableAPrivate 
     DestinationCidrBlock: 0.0.0.0/0 
     NatGatewayId: !Ref NatGateway 
    RouteTableBPrivateInternetRoute: 
    Type: 'AWS::EC2::Route' 
    DependsOn: 
     - VpcGatewayAttachment 
    Properties: 
     RouteTableId: !Ref RouteTableBPrivate 
     DestinationCidrBlock: 0.0.0.0/0 
     NatGatewayId: !Ref NatGateway 
    RouteTableAPublicInternetRoute: 
    Type: 'AWS::EC2::Route' 
    Properties: 
     RouteTableId: !Ref RouteTableAPublic 
     DestinationCidrBlock: 0.0.0.0/0 
     GatewayId: !Ref InternetGateway 
    RouteTableBPublicInternetRoute: 
    Type: 'AWS::EC2::Route' 
    Properties: 
     RouteTableId: !Ref RouteTableBPublic 
     DestinationCidrBlock: 0.0.0.0/0 
     GatewayId: !Ref InternetGateway 
    NetworkAclPublic: 
    Type: 'AWS::EC2::NetworkAcl' 
    Properties: 
     VpcId: !Ref Vpc 
    NetworkAclPrivate: 
    Type: 'AWS::EC2::NetworkAcl' 
    Properties: 
     VpcId: !Ref Vpc 
    SubnetNetworkAclAssociationAPublic: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref SubnetAPublic 
     NetworkAclId: !Ref NetworkAclPublic 
    SubnetNetworkAclAssociationBPublic: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref SubnetBPublic 
     NetworkAclId: !Ref NetworkAclPublic 
    SubnetNetworkAclAssociationAPrivate: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref SubnetAPrivate 
     NetworkAclId: !Ref NetworkAclPrivate 
    SubnetNetworkAclAssociationBPrivate: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref SubnetBPrivate 
     NetworkAclId: !Ref NetworkAclPrivate 
    NetworkAclEntryInPublicAllowAll: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAclPublic 
     RuleNumber: 99 
     Protocol: -1 
     RuleAction: allow 
     Egress: false 
     CidrBlock: 0.0.0.0/0 
    NetworkAclEntryOutPublicAllowAll: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAclPublic 
     RuleNumber: 99 
     Protocol: -1 
     RuleAction: allow 
     Egress: true 
     CidrBlock: 0.0.0.0/0 
    NetworkAclEntryInPrivateAllowVpc: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAclPrivate 
     RuleNumber: 99 
     Protocol: -1 
     RuleAction: allow 
     Egress: false 
     CidrBlock: 0.0.0.0/0 
    NetworkAclEntryOutPrivateAllowVpc: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAclPrivate 
     RuleNumber: 99 
     Protocol: -1 
     RuleAction: allow 
     Egress: true 
     CidrBlock: 0.0.0.0/0 
    LambdaSecurityGroup: 
    Type: 'AWS::EC2::SecurityGroup' 
    Properties: 
     GroupDescription: Lambdas security group 
     SecurityGroupEgress: 
     - CidrIp: 0.0.0.0/0 
      IpProtocol: '-1' 
     SecurityGroupIngress: 
     - CidrIp: 0.0.0.0/0 
      IpProtocol: '-1' 
     VpcId: !Ref Vpc 
Outputs: 
    VpcId: 
    Description: VPC ID 
    Value: !Ref Vpc 
    Export: 
     Name: !Sub "Portal-VpcId" 
    SubnetAPrivate: 
    Description: Subnet A Private 
    Value: !Ref SubnetAPrivate 
    Export: 
     Name: !Sub "SubnetAPrivate" 
    SubnetBPrivate: 
    Description: Subnet B Private 
    Value: !Ref SubnetBPrivate 
    Export: 
     Name: !Sub "SubnetBPrivate"  
    SubnetAPublic: 
    Description: Subnet A Public 
    Value: !Ref SubnetAPublic 
    Export: 
     Name: !Sub "SubnetAPublic" 
    SubnetBPublic: 
    Description: Subnet B Public 
    Value: !Ref SubnetBPublic 
    Export: 
     Name: !Sub "SubnetBPublic" 
    LambdaSecurityGroup: 
    Description: Access to Lambda functions 
    Value: !Ref LambdaSecurityGroup 
    Export: 
     Name: !Sub "LambdaSecurityGroup" 

rds.yml

DBSubnetGroup: 
    Type: 'AWS::RDS::DBSubnetGroup' 
    Properties: 
     DBSubnetGroupDescription: Subnets available for the RDS DB Instance 
     SubnetIds: 
     - !Ref SubnetAPublic 
     - !Ref SubnetBPublic 
    VPCSecurityGroup: 
    Type: 'AWS::EC2::SecurityGroup' 
    Properties: 
     GroupDescription: Security group for RDS DB Instance. 
     VpcId: !Ref VpcId 
     SecurityGroupIngress: 
     - 
      IpProtocol: "tcp" 
      FromPort: "3306" 
      ToPort: "3306" 
      CidrIp: "[my IP]" 
     - 
      IpProtocol: "tcp" 
      FromPort: "3306" 
      ToPort: "3306" 
      CidrIp: "10.0.64.0/19" 
     - 
      IpProtocol: "tcp" 
      FromPort: "3306" 
      ToPort: "3306" 
      CidrIp: "10.0.96.0/19" 
    DBInstance: 
    Type: 'AWS::RDS::DBInstance' 
    Properties: 
     DBName: !Join 
     - '' 
     - - portal 
      - !Ref Environment 
     AllocatedStorage: !Ref DBAllocatedStorage 
     DBInstanceClass: !Ref DBClass 
     Engine: MariaDB 
     EngineVersion: '10.1.23' 
     MasterUsername: !Ref DBUsername 
     MasterUserPassword: !Ref DBPassword 
     DBSubnetGroupName: !Ref DBSubnetGroup 
     StorageEncrypted: true 
     PubliclyAccessible: true 
     VPCSecurityGroups: 
     - !Ref VPCSecurityGroup 
    DatabaseDnsRecord: 
    Type: AWS::Route53::RecordSet 
    Properties: 
     HostedZoneName: !Join 
     - '' 
     - - !Ref HostedZoneName 
      - . 
     Name: !Join 
     - '' 
     - - portal 
     - !Ref Environment 
     - 'db' 
     - . 
     - !Ref HostedZoneName 
     - . 
     Type: CNAME 
     TTL: '60' 
     ResourceRecords: 
     - !GetAtt 
      - DBInstance 
      - Endpoint.Address 
    DependsOn: DBInstance 

答えて

0

あなたの問題は、私はルート のすべてを切り替える場合は動作しているようだ唯一のことはある。この

ですNATとは対照的にIGWを使用するテーブル

インスタンスは、公共のインターネット(自宅のPC)からアクセスできないプライベートサブネットにあります。

1つのインスタンスをパブリックサブネットに移動します。推奨されません。

2)プライベートサブネットをパブリックサブネットに変換します(NATからIGWへの切り替え)。推奨されません。

3)プライベートサブネット内のインスタンスにトラフィックをルーティングするパブリックサブネットにある新しいEC2インスタンスに、ホームネットワークからVPNを作成します。 推奨

OpenVPNは非常にクールな解決策です。これを自分で構築したり、無料でAmazonマーケットプレイスからOpenVPNインスタンスを起動することができます(無料は2人のユーザーに限られていると思います)。 OpenVPN Access Server

OpenVPNアクセスサーバーの実行中にEC2インスタンスの料金が発生します。私がやることは、バッチファイルに格納されたAWS CLIコマンドを使用するときに、そのインスタンスをシャットダウンしてバックアップを開始することです。

関連する問題