aws-sdk-ruby v3 не предоставляет политику iam в надлежащем формате json - PullRequest
0 голосов
/ 04 июня 2019

Я хочу получить документ политики, связанный с ролью и политикой iam, используя aws-sdk и ruby. Используя aws cli, я получаю правильный вывод, но используя aws sdk и ruby, получаю зашифрованный вывод json.

aws iam get-role-policy --role-name = ddp-lambda-s3-ec2 --policy-name = ddp-acceptrole-solutionsdev-talos

require 'aws-sdk'
role_name = "ddp-lambda-s3-ec2"
iamclient = Aws::IAM::Client.new()


resp = iamclient.get_role_policy({
  role_name: role_name, # required
  policy_name: "ddp-assumerole-solutionsdev-talos", # required
})

puts resp.policy_document

Использование aws cli для получения правильного вывода:

$ aws iam get-role-policy --role-name=ddp-lambda-s3-ec2 --policy-name=ddp-assumerole-solutionsdev-talos
{
    "RoleName": "ddp-lambda-s3-ec2",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": {
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::443233333122:role/ddp_talos_role",
            "Effect": "Allow"
        }
    },
    "PolicyName": "ddp-assumerole-solutionsdev-talos"
}

Но когда я запускаю код выше, я получаю следующий вывод:

$ ruby iam.rb
%7B%0D%0A%20%20%20%20%22Version%22%3A%20%222012-10-17%22%2C%0D%0A%20%20%20%20%22Statement%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%22Effect%22%3A%20%22Allow%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Action%22%3A%20%22sts%3AAssumeRole%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Resource%22%3A%20%22arn%3Aaws%3Aiam%3A%3A443299236587%3Arole%2Fddp_talos_role%22%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A

1 Ответ

0 голосов
/ 04 июня 2019

Всегда полезно читать документацию по API, особенно когда он не дает сбоя, но возвращает что-то неожиданное.Вы видели это?

... Политики, возвращаемые этим API, соответствуют кодировке URL-адреса в соответствии с RFC 3986. Вы можете использовать метод декодирования URL-адреса для преобразования политики обратно в обычный текст JSON ...( source )

URI.decode на вашем результате дает нужный вам JSON ...

...