4

使用Cloudformation,我試圖找出一些用例。Cloudformation:Templete RDS MySQL創建數據庫,表,用戶,或加載方案

第一種情況是使用現有的AWS RDS Mysql服務器,如何通過Cloudformation模板創建數據庫, 表和用戶帳戶。

看過Cloudformation文檔後,我想可能會有一個AWS :: RDS :: DBInstance屬性,它允許我執行此操作;然而,雖然我找不到如何指定一個數據庫主機源(或者我可能誤解了它),但是會允許的。

[AWS - 屬性 - RDS數據庫實例] [1]

然後,看着從AWS的Cloudformation RDS模板,我看到了 「FN ::加入」 命令脫穎而出。我的第一個案例是用fn :: join完成的嗎?

"UserData"  : { "Fn::Base64" : { "Fn::Join" : ["", [.... 

接着,在第二種情況下,我也無法找到如何使用現有的RDS MySQL服務器,負載從一個MySQL mysqldump的一個方案。

我看了看上面的鏈接尋找答案的文檔,但不能肯定。我注意到AWS模板大多允許您創建資源。

最後,爲了解決上述兩種情況,我也一直在閱讀,它可以或應該(?)使用兩種工具方法完成,方法是使用aws Cloudformation模板並調用Chef。

想法?

回答

3

簡短的回答是:你不能,現在,自動運行的實例創建SQL查詢(在未來,誰知道...)。

我會用下面的方法來解決這個經典問題:

  • 使用的EC2運行,你需要(不知道MySQL的代碼,如果你需要把一個「DependsOn」子句中的EC2,因爲您將必須使用GetAtt來引用RDS端點,該GetAtt可能會放置隱式的DependsOn子句)。只要您以某種方式通過RDS端點,就可以將其放入用戶數據或任何您想要的腳本中。當然,您需要在您的EC2上安裝MySQL客戶端軟件包。

正如您所寫,CloudFormation允許您創建AWS資源,但這些資源的填充取決於您。再一次,一個MySQL客戶端可以做到這一點(因爲MySQL轉儲不過是文件中的SQL代碼,與您的初始需求相同)。

使用廚師或木偶不會單獨解決你的問題,因爲兩者都需要安裝在EC2的代理,你不能運行在RDS服務器的代理。所以,你可以使用一個廚師或木偶劑,這將反過來推出的MySQL腳本的EC2,但是這不會給你比以前的解決方案更加

+0

今天,使用Lambda函數+ CustomResource使得比更有意義一個EC2實例 – 2017-09-12 16:02:21

相關問題