2016-10-19 3 views
0

Я скрипт, который использует aws cli, мой сценарий будет выполняться с Судо (Ex: sudo ./test.sh)Мой AWS CLI не работает с Судо

Но я получил сообщение: Unable to locate credentials. You can configure credentials by running "aws configure".

На самом деле, я сделал конфигурацию для обоих sudo aws configure и aws configure

Что я сделал не так? Пожалуйста, помогите. Спасибо!

ответ

1

AWS CLI сконфигурировал ваши учетные данные в $HOME/.aws/credentials. Обычно, когда вы используете sudo, он не изменяет значение переменной среды $HOME, поэтому файл учетных данных AWS будет сгенерирован в том же месте. Вы можете проверить это, запустив aws configure как обычный пользователь, набрав ключ, затем запустив sudo aws configure, и вы увидите, что значение по умолчанию будет ключом, который вы только что положили.

Итак, на этом этапе, вы должны иметь возможность запускать sudo aws <facility> <some-command>, и он будет работать нормально - AWS CLI будет использовать ваши учетные данные AWS вашего текущего пользователя. Я просто проверил его, чтобы убедиться.

Я подозреваю, что проблема заключается в том, что вы либо вызываете свой скрипт таким образом, который инициализирует сеанс, например, bash -l. В этом случае AWS CLI попытается использовать учетные данные пользователя root; или вы запускаете свой скрипт у пользователя, отличного от того, где вы установили учетные данные AWS, и вы ожидаете, что, поскольку вы оба используете sudo, он получит те же учетные данные (что не так, как мы продемонстрировали).

Вы должны либо:

  1. настроить учетные данные AWS для корневого пользователя, запустив sudo -i, а затем aws configure из жгутов полностью инициализирован root сессии, то убедитесь, что все ваши скрипты используют полный корневой сеанс (использование #!/bin/bash -l как shebang).
  2. Если ваша проблема является второй, и вы не хотите выполнять комплексное решение, предложенное в (1), вы должны настроить учетные данные AWS для каждого из пользователей.
+0

Он работал нормально, если я запускал './Test.sh' и' sudo./Test.sh', но если это не сработало, если я выполнил скрипт, запуская Jenkins. –

+0

Является ли пользователь сервером Jenkins под управлением того же пользователя, для которого вы настроили AWS? – Guss

+0

BTW - Jenkins имеет несколько плагинов для поддержки операций AWS, это может быть хорошей идеей, чтобы проверить их. – Guss

1

Возможно, вам нужно запустить sudo с -E, чтобы сохранить переменные окружения, установленные aws cli.
sudo -E ./test.sh

Смежные вопросы