Политизация завершилась неудачей

Я пытаюсь создать роль IAM в AWS, но пока я создаю, я сталкиваюсь с ошибкой

"При обработке вашего запроса мы столкнулись со следующими ошибками:  Проблема в разрешении на роль. Роль будет создана без разрешения.  Политизация завершилась неудачей в анализе "

{"Version": "2012-10-17",  "Statement": [
{
  "Effect": "Allow",
  "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "arn:aws:logs:*:*:*"
},
{
  "Action": [
    "sqs:SendMessage",
    "sqs:GetQueueUrl"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:sqs:ap-northeast-1:SOME_ID_HERE:test-messages"
}]}

Ответ 1

Я получил эту ошибку, и не мог понять это. Мы с коллегой полили его, и затем мы заметили, что я оставил переменную подстановки без Fn::Sub, например

"Resource": "arn:aws:logs::${AWS::AccountId}:*

будет вызывать эту ошибку, и, конечно, должно быть

"Resource": { "Fn::Sub": "arn:aws:logs::${AWS::AccountId}:*" }

Кстати, по моему опыту, я согласен с EJ Brennan выше, вы не можете использовать подстановочный знак для региона, вместо этого оставьте это поле пустым, как я сделал там.

Ответ 2

Я не думаю, что вы можете подгонять регион в arn, так что вам может понадобиться что-то вроде этого:

arn:aws:logs:us-east-1:*:*

где вы указываете регион, который вы используете вместо нас - east-1.

Дополнительная информация здесь:

http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-cloudwatch-logs

Ответ 3

Одна из проблем, которые могут возникнуть, - это журналы облачного прослушивания. ARNS может иметь 6 символов, потому что между журнальной группой и журнальным потоком имеется дополнительная информация. Например:

"Resource": "arn:aws:logs:us-west-2:123456789012:/my/log/group:log-stream"

или для вашего случая:

"Resource": "arn:aws:logs:*:*:*:*

Я обнаружил, что некоторые ARNS, такие как более конкретный пример выше, дают эту ошибку, если 6-й: не добавлен. Я понимаю, что это противоречит документам (включая документ, предоставленный E.J), поэтому, возможно, это ошибка в AWS где-то

http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html

Ответ 4

Я думаю, вы могли бы сделать

    "Resource": "arn:aws:logs:us-west-2:123456789012:*"

но если нет, вы можете сопоставить свои учетные записи в регионе с отображением:

    "mAWSRegionToAccountsMap": {
        "us-west-2": {
            "prod": "444444444673",
            "dev": "678333333333"

        },
        "us-gov-west-1": {
            "dev": "12345678903",
            "prod": "234345345345"
        }
    }

Затем проинтегрируем отображение в объединение, используя разделитель ":" для разделителя

    "Resource": {
        "Fn::Join": [
            ":",
            [
                "arn:aws:logs",
                { 
                    "Ref": "AWS::Region" 
                },
                {
                    "Fn::FindInMap": [
                        "mAWSRegionToAccountsMap",  {
                            "Ref": "AWS::Region"
                        },
                        "prod"
                    ]
                },
                "/*"
            ]
        ]
    }

Может потребоваться изменить окончание

Ответ 5

Если это не удается для s3, убедитесь, что вы используете правильный формат arn:

  • Правильно - 3 : arn: aws: s3: AccountABucketName

    "Ресурс": "arn: aws: s3: AccountABucketName"

  • Неправильно 2 :: arn: aws: s3 :: AccountABucketName

    "Ресурс": "arn: aws: s3 :: AccountABucketName"

Ответ 6

Забавное новое состояние ошибки, которое я нашел сегодня:

Если:

  • у вас есть шаблон CFN, где вы предоставляете идентификатор учетной записи через параметр
  • И вы используете опору по Default для параметра, чтобы предоставить идентификатор учетной записи
  • И идентификатор учетной записи начинается с 0

CFN будет фактически читать параметр как целое число (и приводить его к типу 9.3476294382E10) - независимо от того, есть ли у вас Type: String в параметре, или используйте !!str для явного приведения его.

Поэтому решение состоит в том, чтобы вручную предоставить параметр для развертывания вместо использования значения по Default: "093476294382".

Надеюсь, я смогу спасти кого-нибудь еще.