簡體   English   中英

如何通過 API 檢索 AWS RDS 數據庫實例中所有數據庫的列表?

[英]How can I retrieve the list of all databases in an AWS RDS DB instance via API?

有什么方法可以通過 API 或 SDK 檢索 AWS RDS 數據庫實例中所有數據庫(或至少數據庫名稱)的列表(語言無關緊要)?

'describe-db-instances' 操作不能滿足我的需要,因為它僅包含“創建時提供的此實例的初始數據庫的名稱”......
在文檔中找不到任何內容 / web
♂️

我想避免觸發 SQL 查詢並最大化 API 的使用。
我已經看到了這個問題,但是它是特定於 Boto3 用法的,而我不限於任何特定的 AWS SDK。

謝謝你們!

雖然您不限於 boto3,但您僅限於 AWS API 提供的內容(據我所知,boto3 涵蓋了幾乎所有內容)。

DescribeDBInstances API 調用返回一個DBInstance對象列表。

每個 object 都有屬性DBName ,這幾乎是通過 AWS API 公開的關於數據庫架構布局的唯一信息。

數據庫名稱

此參數的含義根據您使用的數據庫引擎而有所不同。

MySQL, MariaDB, SQL 服務器, PostgreSQL

包含在創建時提供的此實例的初始數據庫的名稱(如果在創建數據庫實例時已指定)。 在數據庫實例的生命周期內返回相同的名稱。

類型:字符串

Oracle

包含創建的數據庫實例的 Oracle 系統 ID (SID)。 當返回的參數不適用於 Oracle 數據庫實例時不顯示。

類型:字符串

這基本上就是您使用 AWS API 將獲得的全部內容。如果您想要更多,您需要連接到該實例並使用 RDBMS 查詢該信息。 RDS 即服務實際上並不管理您實例上的模式(如果您願意,除了創建初始模式之外)並且不會公開它們。

雖然 Mark B 和 Maurice 100% 正確,但有一個解決方法可能對其他人有用,因為用戶 Optimus 在 AWS 論壇上回答了我的問題:

這是不可能的,因為每個數據庫引擎都有不同的數據庫概念實現,所以這是一個因引擎而異的主題。

您可以做的是使用 ExecuteStatement RDS API 命令https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html來運行 select 查詢該 RDS 的特定引擎的數據庫數據字典實例,然后你可以得到數據庫名稱。

它不會避免運行 SQL,但無論實例數據庫引擎如何,它都是獲取此信息的標准化方式,因為結果 output 始終具有相同的結構。

對我來說,這個解決方案不夠好,因為我沒有ExecuteStatement操作所需的數據庫實例的 Secret-ARN。 但是,我認為其他人可能會使用此解決方法。

謝謝你們!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM