0

私のラムダ機能が自分のRDSサーバーと話すことができるというVPC設定があります。これは機能しています。インターネットにアクセスするにはラムダ関数が必要です。この目的のために、インターネットゲートウェイとそれを可能にする経路をセットアップしようとしています。私は失敗している。私は自分のVPCに雲の形でインターネットにアクセスさせるにはどうすればいいですか?

VPCルートとゲートウェイは、私はサブネットを作成し

"SubnetA": { 
    "Type": "AWS::EC2::Subnet", 
    "Properties": { 
    "VpcId": { "Ref": "VPC" }, 
    "CidrBlock": "10.0.0.0/24", 
    "AvailabilityZone": { "Fn::Select": [ "0", { "Fn::GetAZs": { "Ref": "AWS::Region" } }]}, 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

"SubnetB": { 
    "Type": "AWS::EC2::Subnet", 
    "Properties": { 
    "VpcId": { "Ref": "VPC" }, 
    "CidrBlock": "10.0.1.0/24", 
    "AvailabilityZone": { "Fn::Select": [ "1", { "Fn::GetAZs": { "Ref": "AWS::Region" } }]}, 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

"SubnetARouteTableAssociation" : { 
    "Type" : "AWS::EC2::SubnetRouteTableAssociation", 
    "Properties" : { 
     "SubnetId" : { "Ref" : "SubnetA" }, 
     "RouteTableId" : { "Ref" : "VPCRouteTable" } 
    } 
}, 

"SubnetBRouteTableAssociation" : { 
    "Type" : "AWS::EC2::SubnetRouteTableAssociation", 
    "Properties" : { 
     "SubnetId" : { "Ref" : "SubnetB" }, 
     "RouteTableId" : { "Ref" : "VPCRouteTable" } 
    } 
}, 

私はデータベースのセキュリティグループを有するルートテーブルに関連付ける以下

"VPC": { 
    "Type": "AWS::EC2::VPC", 
    "Properties": { 
    "CidrBlock": "10.0.0.0/16", 
    "EnableDnsSupport": "true", 
    "EnableDnsHostnames": "true", 
    "InstanceTenancy": "default", 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

"VPCRouteTable" : { 
    "Type" : "AWS::EC2::RouteTable", 
    "Properties" : { 
     "VpcId" : { "Ref" : "VPC" }, 
     "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

"InternetGateway" : { 
    "Type" : "AWS::EC2::InternetGateway", 
    "Properties" : { 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

"AttachGateway": { 
    "Type" : "AWS::EC2::VPCGatewayAttachment", 
    "Properties" : { 
     "VpcId" : { "Ref" : "VPC" }, 
     "InternetGatewayId" : { "Ref" : "InternetGateway" } 
    } 
}, 

"InternetRoute" : { 
    "Type" : "AWS::EC2::Route", 
    "DependsOn" : "InternetGateway", 
    "Properties" : { 
     "RouteTableId" : { "Ref" : "VPCRouteTable" }, 
     "DestinationCidrBlock" : "0.0.0.0/0", 
     "GatewayId" : { "Ref" : "InternetGateway" } 
    } 
}, 

として作成され

"DBSubnetGroup": { 
    "Type": "AWS::RDS::DBSubnetGroup", 
    "Properties": { 
    "DBSubnetGroupDescription": "Database Access", 
    "SubnetIds" : [{ "Ref": "SubnetA" }, { "Ref": "SubnetB" }], 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

"DBEC2SecurityGroup": { 
    "Type": "AWS::EC2::SecurityGroup", 
    "Properties": { 
    "GroupDescription": "Security group for RDS DB Instance", 
    "VpcId": {"Ref": "VPC"}, 
    "SecurityGroupIngress" : [{ 
     "IpProtocol": "tcp", 
     "FromPort": "3306", 
     "ToPort": "3306", 
     "CidrIp": "10.0.0.0/16" 
    }], 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

とラムダセキュリティグループ

"LambdaSecurityGroup": { 
    "Type": "AWS::EC2::SecurityGroup", 
    "Properties": { 
    "GroupDescription": "Security group for Lambda", 
    "VpcId": {"Ref": "VPC"}, 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

だから、私のラムダはすぐにデータベースと話すことができます。インターネットにアクセスすることはできません。私は何が欠けていますか?

答えて

1

ラムダ機能がVPCリソースとインターネットの両方にアクセスする必要がある場合は、パブリックとプライベートの2つのサブネットを作成します。ラムダをプライベートサブネットに置き、パブリックサブネットにNATを設定します。あなたのラムダ関数は、インターネットへのアクセスを必要とする場合したがってhttp://docs.aws.amazon.com/lambda/latest/dg/vpc.html

から

、あなたがNAT設定することができます( 例えば、 アマゾンキネシスなどVPCエンドポイントを持っていませんAWSサービスにアクセスするため) VPC内のインスタンス、または では、Amazon VPC NATゲートウェイを使用できます。詳細については、「Amazon VPCユーザーガイド」の「 ゲートウェイ」を参照してください。

+0

NATを稼働している高価なec2を24時間365日必要としません。 AWSはこの理由からインターネットゲートウェイを作った。私はec2インスタンスを実行したいという欲求はありません。 – Justin808

+0

@ Justin808ご理解が間違っています。インターネットゲートウェイは、パブリックサブネット上のエンティティによってのみ使用され、パブリックIPアドレスも関連付けられています。ラムダコンテナを含むパブリックIPアドレスを持たないエンティティからインターネットにアクセスするには、NATゲートウェイ(EC2インスタンスでは実行されません)またはNATインスタンス(もちろんEC2インスタンス)が必要です** 。 〜$ 5/moのために、完全に良いNATインスタンスとしてt2.nanoを使用することができます。 –

関連する問題