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

如何通过标签获取AWS RDS ARN?代码中ResourceName参数该怎么填?

解决方法

你可以直接使用RDS实例描述信息里的db['DBInstanceArn']作为add_tags_to_resource接口的ResourceName参数值,这个字段就是当前RDS实例的ARN,已经在describe_db_instances的返回结果中提供了。

另外你的代码还有几个需要修正的地方:

  • 代码里的client未定义,应该用你初始化的rds客户端对象
  • 标签判断逻辑可以优化,不用遍历所有标签后才执行启动和打标操作,找到匹配标签后即可执行并跳出循环
  • 打标时要填写正确的Key和Value,对应需求的rdsonly:true

修正后的完整代码如下:

import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):
    # 获取所有RDS实例
    dbs = rds.describe_db_instances()
    for db in dbs['DBInstances']:
        # 只处理处于停止状态的实例
        if db['DBInstanceStatus'] == 'stopped':
            try:
                # 获取当前实例的标签列表
                tag_list = rds.list_tags_for_resource(ResourceName=db['DBInstanceArn'])['TagList']
                # 检查是否存在autostart=yes标签
                has_autostart_tag = any(tag['Key'] == 'autostart' and tag['Value'] == 'yes' for tag in tag_list)
                
                if has_autostart_tag:
                    # 启动RDS实例
                    rds.start_db_instance(DBInstanceIdentifier=db['DBInstanceIdentifier'])
                    print(f"正在启动实例: {db['DBInstanceIdentifier']}")
                    
                    # 为实例添加rdsonly:true标签
                    rds.add_tags_to_resource(
                        ResourceName=db['DBInstanceArn'],  # 这里直接使用实例的ARN
                        Tags=[
                            {
                                'Key': 'rdsonly',
                                'Value': 'true'
                            }
                        ]
                    )
                    print(f"已为实例 {db['DBInstanceIdentifier']} 添加rdsonly:true标签")

            except Exception as e:
                print(f"无法启动实例 {db['DBInstanceIdentifier']}")
                print(str(e))

if __name__ == "__main__":
    lambda_handler(None, None)

关键说明

  • ResourceName参数:直接使用db['DBInstanceArn'],这个值是AWS返回的实例唯一ARN标识,完全符合add_tags_to_resource接口对ResourceName的要求
  • 客户端对象统一:全程使用初始化的rds客户端,避免未定义变量错误
  • 标签判断优化:使用any()函数简化标签检查逻辑,代码更简洁高效
  • 标签内容正确:将Tags参数里的Key设为rdsonly,Value设为true,匹配你的需求

内容的提问来源于stack exchange,提问作者neeson.lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:04