2014-07-08 513 views
6

我一直在嘗試使用運行MySQL的EC2實例和RDS數據庫設置AWS Free Tier帳戶。不幸的是,我無法弄清楚如何授予EC2實例對數據庫的訪問權限。我已經閱讀了所有的AWS文檔,但不幸的是過時了,因爲在StackOverflow上發佈的所有問題都是如此。所有文檔都聲明我應該去RDS控制面板的安全組部分。但是,當我這樣做時,這就是我面臨的問題。亞馬遜網絡服務EC2與VPC的RDS連接

enter image description here

**我會包括圖像,但我沒有爲它的聲譽。

好的,我知道我沒有使用EC2-Classic平臺,並且我必須對EC2控制面板中的安全組進行這些更改,但是如何?我不想公開訪問端口3306,我只希望EC2實例能夠與私有子網上的RDS數據庫進行通信。任何幫助將不勝感激。

「支持的平臺上的AWS文檔」和「在VPC中使用RDS」的鏈接無用。他們已經過時了,並且不斷向我介紹RDS控制面板下的安全組,然後我只向我顯示此消息。

回答

15

拇指規則:當您在VPC中設置資源時,請僅使用僅限VPC安全組。個人RDS,Redshift等等。安全小組僅在ec2-classic的情況下工作。意思是,當你沒有在VPC中設置東西時。

轉到VPC控制檯,然後在左側菜單中找到安全組。這些安全組應控制對VPC內部署的AWS資源的訪問。

我不能詳細說明,因爲我不知道你的VPC配置以及你設置的子網(公共/私有)。

UPDATE:

這裏是假設的情況

VPC: 10.0.0.0/16 
1 public subnet: 10.0.0.0/24 
1 Private Subnet: 10.0.1.0/24 
  • 假設你把你的EC2實例在公共子網
  • 假設你把你的RDS比如在私人子網
  • 您希望EC2實例可以從世界的80,443訪問,並且RDS實例應該可以訪問通過EC2實例。

所以,這些都是安全組設置:

爲EC2實例安全組:

Inbound: port 80, 443 : from 0.0.0.0/0 
Outbound: port 3306 : to 10.0.1.0/24 

對於RDS安全組:

Inbound: port 3306: from 10.0.0.0/24 

說明:

Inbound: port 80, 443 : from 0.0.0.0/0 

這將使得EC2實例是在80和443端口從Internet訪問。


Outbound: port 3306 : to 10.0.1.0/24 

這使得EC2實例發送流量的端口3306只專用子網是10.0.1.0/24


Inbound: port 3306: from 10.0.0.0/24 

這使得RDS實例接受來自公共子網10.0.0.0/24的端口3306上的流量。您的EC2實例駐留在公共子網,以便固有RDS將接受流量EC2實例在端口3306


注:上面的設置假定您已經設置相應的路由表中的公共/私人子網。

希望這會有所幫助。

+0

好的,謝謝你的反饋。我想到了這一點。但我仍然不明白如何設置安全組,以便我的ec2實例可以與RDS數據庫進行通信。我想建立一個非常簡單的配置。 EC2實例只能在端口80和443上公開訪問.RDS實例不應公開訪問。它應該只能從ec2實例的端口3306訪問。所以,我的問題是如何在安全組中設置入站規則? – Alonzo

+1

@Alonzo查看最新的答案。 – slayedbylucifer

+0

非常感謝!我需要兩個安全組,然後我必須允許從一個安全組訪問另一個安全組。那是我無法將頭包裹起來的原因。我認爲我必須在一個安全團隊中設置這一切。 – Alonzo