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
, он получит те же учетные данные (что не так, как мы продемонстрировали).
Вы должны либо:
- настроить учетные данные AWS для корневого пользователя, запустив
sudo -i
, а затем aws configure
из жгутов полностью инициализирован root
сессии, то убедитесь, что все ваши скрипты используют полный корневой сеанс (использование #!/bin/bash -l
как shebang).
- Если ваша проблема является второй, и вы не хотите выполнять комплексное решение, предложенное в (1), вы должны настроить учетные данные AWS для каждого из пользователей.
Он работал нормально, если я запускал './Test.sh' и' sudo./Test.sh', но если это не сработало, если я выполнил скрипт, запуская Jenkins. –
Является ли пользователь сервером Jenkins под управлением того же пользователя, для которого вы настроили AWS? – Guss
BTW - Jenkins имеет несколько плагинов для поддержки операций AWS, это может быть хорошей идеей, чтобы проверить их. – Guss