it-swarm.com.ru

Политика провалила анализ старых версий

Я пытаюсь создать роль 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"
}]}
9
Mani Teja

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

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

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

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

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

6
rubyisbeautiful

Одна из проблем, с которой вы можете столкнуться, - это журналы cloudwatch. В 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

0
hayduke

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

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

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

Больше информации здесь:

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

0
E.J. Brennan

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

    "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"
                    ]
                },
                "/*"
            ]
        ]
    }

Может нужно подправить концовку

0
BlackJeep