Политизация завершилась неудачей
Я пытаюсь создать роль 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"
.
Надеюсь, я смогу спасти кого-нибудь еще.