Ответ 1
С нами связался Джефф Барр из Amazon Web Services, и он любезно помог мне узнать, в чем проблема.
Сначала вам нужно декодировать сообщение об ошибке авторизации, используя следующий оператор:
$ aws sts decode-authorization-message --encoded-message 6gO3mM3p....IkgLj8ekf
Убедитесь, что пользователь/роль IAM имеет разрешение для действия sts:DecodeAuthorizationMessage
.
Ответ содержит ключ DecodedMessage
, содержащий другое тело, закодированное JSON:
{
"allowed": false,
"explicitDeny": false,
"matchedStatements": {
"items": []
},
"failures": {
"items": []
},
"context": {
"principal": {
"id": "accesskey",
"name": "testuser",
"arn": "arn:aws:iam::account:user/testuser"
},
"action": "ec2:RunInstances",
"resource": "arn:aws:ec2:us-east-1:account:instance/*",
"conditions": { ... }
}
}
В разделе context => resource
он покажет, какой ресурс он пытался сопоставить с политикой; как вы можете видеть, он ожидает номер учетной записи. Поэтому arn documentation следует читать как:
Если не указано иное, регион и учетная запись необходимы.
Добавление номера учетной записи или *
в затронутой ARN устраняет проблему:
"Resource": [
"arn:aws:ec2:us-east-1:*:instance/*",
"arn:aws:ec2:us-east-1:*:image/ami-f1c3e498",
"arn:aws:ec2:us-east-1:*:snapshot/snap-e2f51ffa",
"arn:aws:ec2:us-east-1:*:snapshot/snap-18ca2000",
"arn:aws:ec2:us-east-1:*:key-pair/shenton",
"arn:aws:ec2:us-east-1:*:security-group/sg-6af56d02",
"arn:aws:ec2:us-east-1:*:volume/*"
]