2017-07-07 39 views
0

我目前使用雲的形成部署堆在那裏我部署,其中包括:如何使RDS :: DbInstance可以從EC2 :: Instance訪問?

  • VPC的
  • 創建VPC
  • EC2實例內部子網的創建子網內
  • 一個RDS Postgres數據庫

起初我無法連接到dbinstance具備,因爲它沒有正確配置SecurityGroup。

當我嘗試創建SecurityGroup時,部署失敗,因爲DBInstance和SecurityGroup是在不同的VPC上創建的。

但我無法在Cloud Formation上的任何RDS相關資源上找到屬性,以調整將在哪個VPC創建數據庫。到處搜索,我發現了創建DBSubnetGroup的另一種方法。

但是,爲了使用DBSubnetGroup,我需要至少有兩個子網(因爲它需要覆蓋至少2個可用區)。我希望避免在另一個AZ上創建一個空的子網來完成這項工作。

有沒有更好的選擇?讓我的EC2實例只使用Cloud Formation訪問我的DBInstance最簡單的方法是什麼?

回答

1

如果您不想使用DBSubnetGroup方式,創建RDS實例的唯一可能性是使用默認VPC。如果您未指定DBSubnetGroup,則您的RDS實例將在默認VPC中創建。

現在有兩種方法讓您的EC2實例訪問RDS實例。

  1. 讓您的RDS實例可公開訪問。確保您有嚴格的SecurityGroup配置來拒絕攻擊的可能性。然後EC2實例應該能夠訪問數據庫實例。

  2. 馬克公開可訪問爲false。將默認VPC與使用VPC對等連接創建的VPC相連接。我推薦這種方式,因爲您的RDS實例不會公開訪問,並且您完成了工作。

在此之上,你提到

但爲了使用DBSubnetGroup,我需要有至少兩個子網(因爲它需要覆蓋至少2個可用性區域)。我希望避免在另一個AZ上創建一個空的子網來完成這項工作。

RDS不能這樣工作。當您指定MultiAZ = true並且擁有DBSubnetGroup時,在您的RDS模板中,您的DBInstance的副本將保留在另一個可用於不同AZ的子網中。當主節點關閉時,此副本節點出現並充當主節點。牢記這一點,我強烈建議你在創建RDS實例時使用DBSubnetGroup。

更多閱讀可用here

希望這有助於。