2017-04-12 71 views
1

我知道AWS現在允許這樣做,並且具有instructions以進行手動設置。儘管如此,我正試圖在雲計算中設置它並陷入困境。目前,當我嘗試訪問我的RDS服務器時,出現connect ETIMEDOUT錯誤。嘗試設置lambda以訪問AWS上的RDS服務器,但獲取超時

我有我的VPC,子網和安全組設置有以下幾點:

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

"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" } }] 
    } 
}, 

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

"SecurityGroup": { 
    "Type": "AWS::EC2::SecurityGroup", 
    "Properties": { 
    "GroupDescription": "Database Access", 
    "VpcId": {"Ref": "VPC"}, 
    "SecurityGroupIngress" : [{ 
     "IpProtocol": "tcp", 
     "FromPort": "3306", 
     "ToPort": "3306", 
     "CidrIp": "10.0.0.0/16" 
    }], 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    } 
}, 

我不實際使用SubnetB反而使AWS::RDS::DBSubnetGroup你需要子網中至少有兩個可用性區域。

我的RDS數據庫使用VPC和安全組進行設置。

"Database": { 
    "Type": "AWS::RDS::DBInstance", 
    "Properties": { 
    "DBName": { "Fn::Join": ["", { "Fn::Split": [".", { "Ref": "DomainName" }]}]}, 
    "AllocatedStorage": "5", 
    "DBInstanceClass": "db.t2.micro", 
    "Engine": "MySQL", 
    "EngineVersion": "5.5", 
    "MasterUsername": { "Ref": "DBUsername" }, 
    "MasterUserPassword": { "Ref": "DBPassword" }, 
    "DBSubnetGroupName": { "Ref": "SubnetGroup" }, 
    "VPCSecurityGroups" : [{ "Fn::GetAtt": [ "SecurityGroup", "GroupId" ] }], 
    "Tags" : [{ "Key": "Name", "Value": { "Ref": "DomainName" } }] 
    }, 
    "DeletionPolicy": "Snapshot" 
}, 

所以我認爲數據庫端在VPC中是正確的,並且能夠同時討論兩個子網。

我的lambda是在安全組和SubnetA中設置的。

"LambdaFunctionUpdate": { 
    "Type": "AWS::Lambda::Function", 
    "Properties": { 
    "Code": { 
     "ZipFile": "exports.handler = function (event, context) { context.succeed(\"Hello, World!\"); };" 
    }, 
    "Description": "Used to create and or sync database tables to the application models", 
    "Handler": "index.handler", 
    "MemorySize": 128, 
    "Role": { "Fn::GetAtt": ["LambdaExecutionRole", "Arn" ] }, 
    "Runtime": "nodejs4.3", 
    "Timeout": 30, 
    "VpcConfig": { 
     "SecurityGroupIds": [{ "Fn::GetAtt": ["SecurityGroup", "GroupId"] }], 
     "SubnetIds": [{"Ref": "SubnetA"}] 
    } 
    } 
}, 

在我輸出數據庫端點信息的一切結束時。

"Outputs": { 
    "DatabaseEndpoint": { 
    "Value": { "Fn::Join" : [":", [{ "Fn::GetAtt": ["Database", "Endpoint.Address" ] }, { "Fn::GetAtt": ["Database", "Endpoint.Port" ] }]]}, 
    "Description": "Database endpoint" 
    } 
} 

當我運行我的lambda並嘗試連接到RDS服務器與端點給定我得到超時錯誤。

{ 
    "errorMessage": "connect ETIMEDOUT", 
    "errorType": "SequelizeConnectionError", 
    "stackTrace": [ 
    "Handshake._callback (/var/task/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:95:20)", 
    "Handshake.Sequence.end (/var/task/node_modules/mysql/lib/protocol/sequences/Sequence.js:86:24)", 
    "Protocol.handleNetworkError (/var/task/node_modules/mysql/lib/protocol/Protocol.js:364:14)", 
    "Connection._handleNetworkError (/var/task/node_modules/mysql/lib/Connection.js:428:18)", 
    "Connection._handleConnectTimeout (/var/task/node_modules/mysql/lib/Connection.js:424:8)", 
    "Socket.g (events.js:260:16)", 
    "emitNone (events.js:67:13)", 
    "Socket.emit (events.js:166:7)", 
    "Socket._onTimeout (net.js:318:8)", 
    "_runOnTimeout (timers.js:524:11)", 
    "_makeTimerTimeout (timers.js:515:3)", 
    "Timer.unrefTimeout (timers.js:584:5)" 
    ] 
} 

回答

0

VPC配置不正確。 DNS服務無法關閉。

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