[英]Python script wont power off or on due to DB status
我在使用 AWS Lambda 的 AWS Gateway 中創建了一個 API。 Lambda 使用 python 腳本。 我可以使用 API 網關來調用 Lambda 可以打開或關閉 RDS 集群。 在我的 AWS 賬戶中,我有 4 個 RDS 集群。 如果所有 4 個都關閉,我可以使用 API 一次將它們全部打開如果所有 4 個都打開,我可以使用 API 一次將它們全部關閉
但是我遇到的問題是,如果其中一個集群已打開電源但其他 3 個未啟動,我的腳本將不會啟動其他 3 個,因為它告訴我一個集群不在正確的 state 中(它已經打開)
如果一個集群已經關閉並且我想關閉其他所有東西,我的腳本再次失敗,因為其中一個集群已經關閉
我收到這個錯誤
[錯誤] InvalidDBClusterStateFault:調用 StartDBCluster 操作時發生錯誤(InvalidDBClusterStateFault):DbCluster集群名稱未停止
這是我的腳本,如果一切都關閉或打開,它可以關閉或打開。 誰能告訴我應該添加什么可以解決我的問題? 基本上我試圖添加到我的腳本中,如果狀態可用,腳本將關閉集群,如果停止,它將啟動它。 “方法”是我用於 api 的參數。 基本上 api 有一個調用 URL 我可以編輯它有 Method=StopAll 或 Method=StartAll
def handler(event, context):
response = rds_client.describe_db_clusters(
MaxRecords=100
)
allClusters = []
allClusters.append(response['DBClusters'])
while 'Marker' in response:
old_marker = response['Marker']
response = rds_client.describe_db_clusters(
MaxRecords=100,
Marker = old_marker
)
allClusters.append(response['DBClusters'])
if event['Method'] == "StopAll":
for cluster in allClusters:
for key in cluster:
rds_client.stop_db_cluster(
DBClusterIdentifier=key['DBClusterIdentifier']
)
if event['Method'] == "StartAll":
for cluster in allClusters:
for key in cluster:
rds_client.start_db_cluster(
DBClusterIdentifier=key['DBClusterIdentifier']
)```
每當您調用start_db_cluster
或stop_db_cluster
時,您都可以包裝在 try/except 中,這樣即使一個調用失敗,它仍會嘗試創建 rest:
try:
rds_client.start_db_cluster(DBClusterIdentifier=cluster_id)
except rds_client.exceptions.InvalidDBClusterStateFault:
print(f"Cluster {cluster_id} in invalid state")
except Exception as e:
print(f"Error updating cluster {cluster_id}: {repr(e)}")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.