Подключение к другой учетной записи ARN / Role / Amazon при попытке развертывания - PullRequest
0 голосов
/ 11 января 2019

У меня ранее был установлен Serverless на сервере, а затем, когда я попытался отредактировать функцию и упаковать ее обратно, чтобы отредактировать zip-файл, я сломал его, поэтому мне пришлось начать все сначала. Итак, чтобы начать эту проблему: у меня был запущен Serverless и я использовал его с этим пакетом - https://github.com/adieuadieu/serverless-chrome/tree/master/examples/serverless-framework/aws

Когда я sudo npm run deploy, я получаю ServerlessError:

ServerlessError: Пользователь: arn: aws: sts :: XXX: предполагаемая роль / EC2CodeDeploy / i-268b1acf не уполномочен выполнять: cloudformation: DescribeStackResources на ресурсе: arn: aws: cloudformation: us-east-1: YYY : стек / AWS-DEV / *

Я не уверен, почему он пытается подключиться к роли, а не к IAM. Поэтому я проверяю роль, и она находится в совершенно другой учетной записи AWS, чем настроенная мной учетная запись. Давайте назовем эту учетную запись B.

Когда дело доходит до настройки, я установил AWS CLI и ввел ключ, идентификатор и регион в своей учетной записи A в AWS. Не касаться аккаунта Б вообще. Когда я запускаю aws s3 ls, я вижу правильные сегменты s3 учетной записи с ключом / id / regioin, поэтому я знаю, что CLI работает с правильной учетной записью. Звучит хорошо. Я проверяю файл ~/.aws/creditionals и только один профиль [default], который кажется нормальным. Других профилей здесь нет. Я скопировал это в файл ~/.aws/config, так что теперь оба файла одинаковы. Прекрасно работает.

Затем я захожу в свой SSH, где я установил без сервера, и запускаю npm run deploy, и он выдает мне то же самое сообщение выше. Я думаю, может быть, почему-то не использует правильный счет по какой-либо причине. Поэтому я вручную установил ключ доступа и секрет с помощью следующих команд:

serverless config credentials --provider aws --key XXX --secret YYY

Он сообщает, что в файле aws creds уже есть профиль, поэтому я добавляю --o в конец, чтобы перезаписать. Я запускаю sudo npm run deploy и все та же ошибка.

Затем я запускаю эту команду, чтобы вручную установить профиль в титрах для бессерверного сервера, имя профиля которого соответствует имени пользователя IAM:

serverless config credentials --provider aws --key XXX --secret YYY --profile serverless-agent

Где «serverless-agent» - это имя моего IAM-пользователя, которого я пытался использовать для развертывания. Я запускаю его, он говорит, что в файле aws creds уже есть существующий профиль, поэтому я запускаю его с параметром --o, и он сообщает мне, что файл aws теперь обновлен. В bash я захожу в Vim файл и вижу только настройки «[по умолчанию]», как будто ничего не изменилось. Я запускаю sudo npm run deploy, и он выдает мне ту же ошибку.

Затем я иду и вручную устанавливаю доступ и секрет:

export AWS_ACCESS_KEY_ID=XXX
export AWS_SECRET_ACCESS_KEY=YYY

Я запускаю sudo npm run deploy, и он выдает мне ту же ошибку.

Я даже удалил AWS CLI и каталог, содержащий файлы creditionals и config - и когда я вручную устанавливаю кредиты для своей учетной записи с помощью serverless config, он говорит, что в моем файле aws уже настроен профиль , побуждая меня использовать команду overwrite - как это возможно, когда файл буквально отсутствует на моем компьютере?

Итак, я думаю, что само безсерверное имеет кеш или что-то еще, вызывая неправильный файл или что-то еще для кредитов, поэтому я удаляю безсерверный с помощью sudo npm uninstall -g serverless, чтобы я мог начать с нуля снова. Затем я делаю все вышеперечисленные шаги и многое другое снова, и ничего не изменилось. То же сообщение об ошибке.

У меня настроен Apex.run, но для этого нужно использовать мой конфигурационный файл CLI AWS, поэтому я не уверен, вызывает ли это какие-либо проблемы. Но опять же, я не имею ни малейшего представления об этом предмете и не могу найти никакой возможности удалить саму Апекс в своих документах.

В пакете, который я пытаюсь развернуть, у меня нет установленного profile:XXX в файле serverless.yml, потому что я прочитал, если вы этого не сделаете, то по умолчанию используется профиль [default], который вы установили в файле aws creds на вашем компьютере. Просто чтобы проверить, я захожу в файл serverless.yml и устанавливаю profile: default, и ошибка, которую я получаю при запуске npm run deploy, равна

Профиль по умолчанию не существует

Как это возможно, если в моем файле кредитов установлен профиль по умолчанию? Итак, я помню, что ранее я запускал команду serverless config creditionals и добавил к ней имя профиля serverless-agent (но не сохранил в файле aws creds, как я упоминал выше), поэтому я добавил это имя профиля в serverless.yml файл, чтобы посмотреть, работает ли он, и та же ошибка "Профиль по умолчанию не существует".

Итак, вернемся к сообщению об ошибке. Роль - это учетная запись, даже не связанная с пользователем IAM, который я использую в своих кредитах aws. Не зная об этом, похоже, что конфигурация без сервера через ssh не верна или что-то в этом роде. Используются ли старые кредиты, которые я настроил в Apex.run? Почему файл кредитов aws не обновляется профилем, если я вручную установил его в команде serverless config? Я использую ту же учетную запись пользователя (но с новым ключом и секретом), которую я использовал несколько недель назад, когда я правильно развернул и моя Lambda и API были настроены для меня на AWS. Боже, я скучаю по тем временам и хочу, чтобы я не испортил свои существующие функции Lambda, без предварительной установки номера версии, заставляя меня начинать все сначала.

Я так растерялся. Любая помощь будет принята с благодарностью.

1 Ответ

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

Если вы используете роль IAM, вы должны использовать эту роль IAM через роль предположения с использованием powershell.

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

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