我很难在ruby中的AWS cli命令中实现一个数组。 我有一组帐户,我想从特定帐号获取特定政策的政策版本详细信息。我想循环显示帐号并获取帐号的具体政策详情。
这是我的当前代码,当我硬编码帐号
时,它有效require 'aws-sdk'
require 'json'
require 'rest-client'
puts "Here is the current version of the CloudHealth Policy"
accnt = [899163431116, 2382308203823, 8989089089080]
puts "here is the zero index"
puts accnt [0]
j = `aws iam get-policy-version --policy-arn arn:aws:iam::899163431116:policy/cloudhealth-access-policy --version-id v2 --profile jo`
my_hash = JSON.parse(j)
puts JSON.pretty_generate my_hash["PolicyVersion"]
我想收集阵列的意思,所以我可以通过cli命令中的硬编码通过accnt数字循环
require 'aws-sdk'
require 'json'
require 'rest-client'
puts "Here is the current version of the CloudHealth Policy"
accnt = [899163431116, 2382308203823, 8989089089080]
puts "here is the zero index"
puts accnt[0]
j = `aws iam get-policy-version --policy-arn arn:aws:iam::accnt[0]:policy/cloudhealth-access-policy --version-id v2 --profile jo`
my_hash = JSON.parse(j)
puts JSON.pretty_generate my_hash["PolicyVersion"]
答案 0 :(得分:1)
如果你想插值,你需要请求插值:
j = `aws ... arn:aws:iam::#{accnt[0]}:policy...`
如果您使用#{...}
表示法来指示您希望扩展该部分,则仅对字符串进行插值。在你的案例accnt[0]
中只是纯文本,它是字符串的一部分。
您可能希望将代码扩展为更像这样:
accnt.each do |id|
j = `aws ... arn:aws:iam::#{id}:policy...`
# ...Other code relating to parsing/printing for this round
end
不要忘记AWS Ruby库可以执行命令行aws
工具可以执行的所有操作,因此可能不需要在此处使用shell。 Aws::IAM::Policy课程应该能够得到你需要的东西。