2017-07-05 1 views
0

zu integrieren Ich habe eine harte Zeit, ein Array in einem AWS CLI-Befehl in Ruby zu implementieren. Ich habe eine Reihe von Konten, ich möchte die Richtlinienversion Details einer bestimmten Richtlinie von einer bestimmten Kontonummer erhalten. Ich möchte die Kontonummern durchlaufen und die spezifischen Richtliniendetails für die Kontonummern abrufen.Wie ein Array in einen CLI-Befehl in Ruby

hier ist meine aktuellen Code und es funktioniert, wenn ich hart Code der Kontonummer

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"] 

ICH WILL DIE ARRAY ACCNT einzuarbeiten, so kann ich eine Schleife durch die ACCNT Zahlen mit einer harten Codierung im cli Befehl

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"] 

Antwort

1

Wenn Sie Sie benötigen, um fordern Interpolation zu interpolieren wollen:

j = `aws ... arn:aws:iam::#{accnt[0]}:policy...` 

Zeichenfolgen werden nur interpoliert, wenn Sie die Schreibweise #{...} verwenden, um anzugeben, dass das Teil erweitert werden soll. In Ihrem Fall ist accnt[0] nur einfacher Text, der Teil der Zeichenfolge ist.

Sie werden wahrscheinlich wollen Ihren Code erweitern, um mehr so ​​zu sein:

accnt.each do |id| 
    j = `aws ... arn:aws:iam::#{id}:policy...` 
    # ...Other code relating to parsing/printing for this round 
end 

Sie nicht vergessen, dass die AWS Ruby-Bibliothek alles, um die Befehlszeilen aws Werkzeug und mehr tun, tun kann, kann, so die Muschel hier anzugreifen ist wahrscheinlich nicht notwendig. Die Klasse Aws::IAM::Policy sollte in der Lage sein zu bekommen, was Sie brauchen.

+0

danke mann. Ich werde es mir ansehen. – koushiskool