从aws rds describe-db-instances访问AWS RDS Arn
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从aws rds describe-db-instances访问AWS RDS Arn相关的知识,希望对你有一定的参考价值。
我正在使用Ansible访问我帐户中的某些RDS群集。我有与此相关的命令。
这是输入数据。
"stdout_lines": [
"{",
" "DBInstances": [",
" {",
" "PubliclyAccessible": false, ",
" "MasterUsername": "xxxxx", ",
" "MonitoringInterval": 0, ",
" "LicenseModel": "general-public-license", ",
" "VpcSecurityGroups": [",
" {",
" "Status": "active", ",
" "VpcSecurityGroupId": "xxxx"",
" }",
" ], ",
" "InstanceCreateTime": "xxxxxx", ",
" "CopyTagsToSnapshot": false, ",
" "OptionGroupMemberships": [",
" {",
" "Status": "in-sync", ",
" "OptionGroupName": "xxxxx"",
........
" "DBInstanceArn": "arn:aws:rds:region:xxxx:db:xxxx", ",
.......
[在运行下面的命令时,以[0 [数组中的项目为目标,我收到此输出。
“ {{(registered.stdout_lines | from_json)['DBInstances'] [0] ['DBInstanceArn']}}”“
ok: [localhost] => {
"msg": "arn:aws:rds:region :xxxx:db:xxxx"
}
通过这样指定,我可以找到所需的项目。我需要阵列ID,因为其中有3个。我试图以此方式运行它。但是我得到了所有数据。
- name: Show
set_fact:
var: "item.db_instance_arn"
with_items: "{{rds.instances}}"
register: variable
我也得到我想要的事实。我只是无法输出该个人事实。
是否有办法击中数组中的所有项目并输出我需要的一个变量?
谢谢。新年快乐!
您将需要(registered.stdout | from_json)
,而不是(registered.stdout_lines | from_json) }}
,因为stdout_lines
是list
的str
,但是from_json
想要str
-令您惊讶的是,您的问题没有包含您遇到的错误消息,因为它肯定会产生一个
然后,理清了JSON解析之后,您将要使用map
filter,因为正如您所观察到的,map
是一个DBInstances
,这意味着您需要像这样有效地迭代其对象:] >
list
[如果愿意,可以使用使用
- debug: msg: my DB ARNs are {{ (registered.stdout | from_json).DBInstances | map(attribute="DBInstanceArn") | list }}
语法的json_query
filter,尽管大多数时候我发现它不透明而不是有用的:
json_query
以上是关于从aws rds describe-db-instances访问AWS RDS Arn的主要内容,如果未能解决你的问题,请参考以下文章