aws ec2 - команда aws не найдена при запуске пользовательских данных - PullRequest
0 голосов
/ 01 июня 2018

Моя цель - запустить экземпляр так, чтобы при загрузке запускался сценарий запуска для загрузки некоторых файлов конфигурации, хранящихся в AWS S3.Поэтому в скрипте запуска я устанавливаю детали корзины S3, а затем запускаю config.sh, где aws s3 sync выполняет фактическую загрузку.Однако команда aws не работает - она ​​не найдена для выполнения.

Данные пользователя

У меня есть следующие данные пользователя при запуске экземпляра EC2:

#!/bin/bash
# Set command from https://stackoverflow.com/a/34206311/919480
set -e -x
export S3_PREFIX='bucket-name/folder-name'
/home/ubuntu/app/sh/config.sh

CLI AWS был установлен с pip, как описано в документации .

Наблюдение

Я думаю, сценарий пользовательских данных запускается с rootИдентификатор пользователя.Вот почему в пользовательских данных у меня есть /home/ubuntu/, потому что $HOME не перешел в /home/ubuntu/.Фактически, первая команда в config.sh - это mkdir /home/ubuntu/csv, которая создает каталог с владельцем как root!

Итак, было бы правильно сделать вывод, что пользовательские данные работают под root userID?

Разрешение

Стоит ли использовать REST API для загрузки?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Решение

Учитывая, что AWS CLI был установлен без sudo pip, CLI недоступен для пользователя root.Поэтому для запуска с пользователем ubuntu я использовал следующий скрипт пользовательских данных:

#!/bin/bash
su ubuntu -c '$HOME/app/sh/config.sh default`

В config.sh аргумент default используется для создания полного URI S3 перед вызовом CLI.Тем не менее, вызов был успешным только с полным путем $HOME/.local/bin/aws, несмотря на тот факт, что к aws можно получить доступ при обычном входе в систему.

0 голосов
/ 01 июня 2018

Сценарии, введенные как пользовательские данные, выполняются от имени пользователя root , поэтому не используйте команду sudo в сценарии.

См .: Запуск команд в вашем экземпляре Linux наЗапустите

Одним из решений является установка переменной PATH env для включения CLI AWS (и добавления любого другого необходимого пути) перед выполнением CLI AWS.

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