[英]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.