You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS CLI命令批量停止多个RDS实例

问题原因说明

aws rds stop-db-instance 命令的 --db-instance-identifier 参数单次仅支持传入1个实例ID,所以直接传入多个ID的写法本身不被AWS官方支持,无法生效。


可行实现方案

方案1:单行Shell命令实现批量停止(适合临时手动操作场景)

直接通过循环遍历待停止的实例ID即可,无需额外开发,单条命令即可完成:

# 停止指定的多个实例
for id in test-instance1 test-instance2 testinstance3; do aws rds stop-db-instance --db-instance-identifier $id --region ap-southeast-1 --profile dev; done

如果需要按规则批量过滤实例(比如停止所有test前缀的实例),可以结合实例查询命令实现:

# 自动过滤所有test前缀的实例并触发停止
aws rds describe-db-instances --region ap-southeast-1 --profile dev --query 'DBInstances[?starts_with(DBInstanceIdentifier, `test`)].DBInstanceIdentifier' --output text | xargs -I {} aws rds stop-db-instance --db-instance-identifier {} --region ap-southeast-1 --profile dev

方案2:Lambda + EventBridge 定时触发(适合定期自动启停需求)

你提到的CRON定时任务方案完全可行,实现步骤如下:

  • 给Lambda函数配置IAM权限,需要开放rds:StopDBInstance、rds:DescribeDBInstances权限,建议限制资源范围避免权限溢出
  • Lambda参考代码(Python):
import boto3

rds = boto3.client('rds', region_name='ap-southeast-1')
# 可固定写死待停止实例ID,也可以调用describe_db_instances接口动态过滤
TARGET_INSTANCES = ['test-instance1', 'test-instance2', 'testinstance3']

def lambda_handler(event, context):
    for instance_id in TARGET_INSTANCES:
        try:
            rds.stop_db_instance(DBInstanceIdentifier=instance_id)
            print(f"已触发停止实例: {instance_id}")
        except Exception as e:
            print(f"停止实例{instance_id}失败: {str(e)}")
  • 进入AWS EventBridge控制台创建规则,选择定时触发模式,按需求填写CRON表达式,目标绑定刚才创建的Lambda函数即可
  • 注意:如果RDS实例开启了停止保护,需要先关闭保护才能正常停止;另外AWS RDS单次最长停止时间为7天,到期会自动启动。

内容的提问来源于stack exchange,提问作者wilean0120

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:03