Ошибка при использовании политики put-group с cli-input-json

Я пытаюсь создать политику для группы, используя cli-input-json, предоставляя json в качестве входных данных для команды cli. Команда

aws iam put-group-policy --cli-input-json file://D:\\json\\demo\\json
grpPolicy_testpolicy1.json

что дает следующую ошибку

A client error (MalformedPolicyDocument) occurred when calling the PutGroupPolicy operation: The policy is not in the valid JSON format.

Содержимое json-файла в D: \ json \ demo \ json grpPolicy_testpolicy1.json:

{
    "GroupName": "testgroup11",
    "PolicyName": "testpolicy11",
    "PolicyDocument": "file://D:\\json\\policypermission.txt"
}

Содержимое файла документа политики в D: \ json \ policypermission.txt:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "uploadandgetfromS3",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:CreateObject",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:PutBucketAcl",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "rds:DescribeDBLogFiles",
                "rds:DownloadDbLogFilePortion"
            ],
            "Resource": "*"
        }
    ]
}

Я проверил все файлы json на достоверность json, но aws cli говорит, что документ политики искажен. Я также создал и прикрепил указанную выше политику, используя обычную команду cli для подтверждения действительности документа политики, и это сработало нормально.


person Subham Tripathi    schedule 03.04.2015    source источник


Ответы (1)


{
    "GroupName": "testgroup11",
    "PolicyName": "testpolicy11",
    "PolicyDocument": "file://D:\\json\\policypermission.txt"
}

Хотя концептуально это имеет смысл, я думаю, что интерфейс командной строки AWS (AWS CLI) не поддерживает встроенные / вложенные ссылки на URL-адреса, такие как file:// здесь, а не только как аргумент командной строки, например:

aws iam put-group-policy --cli-input-json file://D:\\json\\demo\\json \
  grpPolicy_testpolicy1.json --policy-document file://D:\\json\\policypermission.txt

Это работает, потому что аргументы командной строки имеют приоритет над аргументами, указанными как Входные параметры JSON CLI . Однако, если вы не укажете переопределяющий --policy-document, синтаксический анализатор JSON отключает встроенный элемент PolicyDocument, где он ожидает встроенный объект JSON, но вместо этого встречает URL file://D:\\json\\policypermission.txt.

person Steffen Opel    schedule 06.04.2015
comment
не точное решение, которое я искал, но да, это помогло мне без каких-либо серьезных изменений и, самое главное, предоставило другой взгляд на проблему, спасибо :) - person Subham Tripathi; 08.04.2015