Сценарий CloudFormation застрял в UPDATE_ROLLBACK_FAILED, AWSLambdaInternal нужны разрешения GetObject.Как решить? - PullRequest
0 голосов
/ 17 января 2019

У меня стек CloudFormation застрял в состоянии UPDATE_ROLLBACK_FAILED.

Я вижу сообщение об ошибке, связанное с созданием лямбды:

Your access has been denied by S3, please make sure your request credentials 
have permission to GetObject for <codepipeline-bucket-name>/<file-name>]. S3 
Error Code: AccessDenied. S3 Error Message: Access Denied (Service: 
AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException; 
Request ID: <request-id>)

У меня естьДважды проверил, что роль IAM, связанная со стеком, имеет правильные разрешения S3, но я не думаю, что именно CloudFormation выдает ошибку разрешения.Я думаю, что это сервис AWSLambdaInternal.

У меня есть дюжина других стеков, использующих ту же роль IAM, и у меня не было этой проблемы.Я даже пытался сделать конкретный объект S3 общедоступным, чтобы понять, может ли это быть проблемой.Но я могу только предположить, что AWSLambdaInternal не имеет разрешения S3 GetObject.Я даже пытался добавить разрешения sts: AssumeRole для lambda.awsamazon.com в роль IAM, которую использует скрипт CloudFormation, но это ничего не изменило.

Стек работал нормально, пока я не решил переместить функцию Lambda.он создает в VPC.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Лямбда-функция, которую вы переместили в VPC - разве она не служит вам специальным ресурсом CloudFormation? Потому что, когда откат не удался для меня, это, как правило, мое собственное действие - когда я испортил лямбда-функцию пользовательского ресурса, и она перестала работать. В случае сомнений я обычно делаю действие удаления для пользовательского ресурса запретным или заставляю его всегда сообщать об успехе, даже если он терпит неудачу (а затем я должен вручную удалить ресурс).

Если лямбда-функция действительно отвечает за управление пользовательским ресурсом, то вам следует: 1) переместить его туда, где он был; 2) создайте новую лямбда-функцию, которая, как вы знаете, будет доступна и будет работать; 3) только затем переключайтесь на использование лямбда-функции.

В списке событий стека CloudFormation посмотрите, какое обновление ресурса не удалось. Отдельная ошибка не так важна, как ресурс, для которого она была запущена.

0 голосов
/ 18 января 2019

На самом деле статус UPDATE_ROLLBACK_FAILED означает, что у вас не только произошел сбой обновления, но и произошел сбой отката, чего на самом деле не должно быть.

Вы должны проверить, изменили ли вы какие-либо из CloudFormation управляемых ресурсов вручную, и если вы уверены, что это не так - сообщите о своей проблеме в службу поддержки CloudFormation.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...