【问题标题】:How to get RDS tags?如何获取 RDS 标签?
【发布时间】: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 响应是什么?有错误吗?请编辑您的问题以提供更多信息。
  • 不要忽略错误,访问数据前检查错误!

标签: node.js amazon-web-services amazon-rds


【解决方案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)
    }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多