如何获取 RDS 标签?

Posted

技术标签:

【中文标题】如何获取 RDS 标签?【英文标题】:How to get RDS tags? 【发布时间】:2019-05-05 10:28:21 【问题描述】:

我正在尝试获取 rds 实例的标签。 我使用节点 js,它作为异步工作,所以我无法正确获得结果。 请回复报价

补充说: 一个 rds 实例可以有多个标签。 我只想从 rds 实例的标签中导入某些标签。 但是,实例和标签不匹配,因为它是异步工​​作的。

var AWS = require('aws-sdk');
var request = require("request");
AWS.config.update(region:'ap-northeast-1');
var credentials = new AWS.SharedIniFileCredentials(profile: 'test');
AWS.config.credentials = credentials;
var rds = new AWS.RDS();

rds.describeDBInstances(function(err, data) 
    for(var i=0; i<data.DBInstances.length; i++) 
        var instance = data.DBInstances[i];
        var clusterName = instance.DBClusterIdentifier;
        var instanceName = instance.DBInstanceIdentifier;
        var resourceName = 'arn:aws:rds:ap-northeast-1:231497262134:db:' + instanceName;
        var params = 
            ResourceName: resourceName,
        ;

        rds.listTagsForResource(params, function(err, data) 
            var serviceTag = ''
            data.TagList.forEach((tag) => 
                if (tag.Key.toLowerCase() === 'service' && tag.Value.length > 0) 
                    serviceTag = tag.Value;
                        
            )
            console.log(instanceName, serviceTag)
        )
    
)

【问题讨论】:

代码运行了吗? data 响应是什么?有错误吗?请编辑您的问题以提供更多信息。 不要忽略错误,访问数据前检查错误! 【参考方案1】:

我已经用 async 和 await 语法修复了它。 感谢 cmets。

var AWS = require('aws-sdk');
var request = require("request");
AWS.config.update(region:'ap-northeast-1');
var credentials = new AWS.SharedIniFileCredentials(profile: 'test');
AWS.config.credentials = credentials;
var rds = new AWS.RDS();


rds.describeDBInstances(async (err, data) => 
    for(var i=0; i<data.DBInstances.length; i++) 
        var instance = data.DBInstances[i];
        var clusterName = instance.DBClusterIdentifier;
        var instanceName = instance.DBInstanceIdentifier;
        var resourceName = 'arn:aws:rds:ap-northeast-1:231497262134:db:' + instanceName;


        let params = 
            ResourceName: resourceName,
        ;

        let tags = await rds.listTagsForResource(params).promise();
        var serviceTag = ''
        tags.TagList.forEach((tag) => 
            if (tag.Key.toLowerCase() === 'service' && tag.Value.length > 0) 
                serviceTag = tag.Value;
                    
        )


        console.log(clusterName + ',' + instanceName + ',' + serviceTag)
    
)

【讨论】:

以上是关于如何获取 RDS 标签?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon 资源名称 AWS RDS

如何获取 Amazon MySQL RDS 证书

如何在 CDK 应用程序中获取 RDS 实例主机名?

如何通过 id 获取最新的共享 AWS RDS 快照?

如何从 Elastic Beanstalk 环境中删除 RDS 数据层

如何在亚马逊 RDS 上“加载数据文件”?