Ответ 1
Я выяснил, что, когда включен 2FA, нет возможности использовать aws ecr get-login, как только я удалю 2FA из своей учетной записи, я получил токен авторизации
Я попытался следовать инструкциям AWS по настройке авторизации ECR для моего пользователя, предоставив моей политике AmazonEC2ContainerRegistryFullAccess
.
Однако, когда я пытаюсь запустить на своем ПК aws ecr get-login
, я получаю сообщение об ошибке, что у меня нет разрешения.
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::ACCOUNT_NUMBER:user/MY_USER is not authorized to perform: ecr:GetAuthorizationToken on resource: *
Что я сделал неправильно?
Я выяснил, что, когда включен 2FA, нет возможности использовать aws ecr get-login, как только я удалю 2FA из своей учетной записи, я получил токен авторизации
Вы должны приложить политику к своей роли IAM.
Я подключил AmazonEC2ContainerRegistryFullAccess, и он сработал.
Как показано в описании ошибки, я должен разрешить действие "GetAuthorizationToken" в моей политике.
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
}
Примечание. Это не полная политика, а подраздел "Заявление".
В итоге я использовал AmazonEC2ContainerRegistryPowerUser, так как он показался мне лучшим вариантом, чем полный доступ. Вот правила, которые я нашел по состоянию на июнь 2019 года:
У меня была такая же проблема с ECS, когда я пытался протолкнуть свой контейнер в хранилище.
Чтобы решить эту проблему, я прикрепил к своей роли IAM: AmazonECS_FullAccess
Вот полный ответ, после того как я выполнил все шаги - я смог использовать ECR
Ошибка может иметь 2 значения:
1) Вы не авторизованы, потому что к вашему пользователю не привязана политика ECR
2) Вы не авторизованы, потому что вы используете 2FA, а использование cli небезопасно, если вы не установите временный токен сеанса
Вот список всех шагов для получения доступа (включая обработку 2FA)
Если у вас включен 2FA
aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
. arn-of-the-mfa-device
можно найти в вашем профиле, раздел 2FA. Токен, сгенерированный токен из устройства.AccessKeyId
, SecretAccessKey
и SessionToken
. AWS рекомендует использовать какое-либо задание cron для обновления токена, что означает, что если вы делаете это, вы что-то тестируете, скорее всего, в ваших ресурсах prod не включен 2FA. Вы можете увеличить сеанс, предоставив --duration-seconds
, но только до 36 часов. Хорошее объяснение можно найти на authenticate-mfa-cliЭто должно сделать работу
У меня та же проблема, но я ранее установил permission boundary
только s3, что вызывает проблему.
Убрал permission boundary
, она работала как шарм