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