2017-07-05 5 views
0

ruby​​のAWS cliコマンドで配列を実装するのに苦労しています。 私は一連のアカウントを持っており、特定のアカウント番号から特定のポリシーのポリシーバージョンの詳細を取得したいと考えています。私は口座番号をループし、口座番号の特定のポリシーの詳細を取得したいと思います。 HEREルビのCLIコマンドに配列を組み込む方法

は、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::899163431116:policy/cloudhealth-access-policy --version-id v2 --profile jo` 
my_hash = JSON.parse(j) 
puts JSON.pretty_generate my_hash["PolicyVersion"] 

私はARRAYのACCNTを組み込みたいとき、それは動作しますので、私はCAN LOOP、私の現在のコードです。

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

答えて

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ツールが行うことができるすべてを行うと、より多くのことを忘れてはいけませんシェルをここに係合させることはおそらく必要ではない。 Aws::IAM::Policyクラスは、必要なものを得ることができるはずです。

+0

ありがとうございます。それを見るだろう。 – koushiskool

関連する問題