Могу ли я написать команды запуска aws s3 cp с EC2 - PullRequest
0 голосов
/ 05 сентября 2018

У меня AMI на amazon, который я запускаю по мере необходимости. При запуске я хочу запустить некоторые команды bash, доступные в разделе «3. Настройка сведений об экземпляре -> Дополнительные сведения -> Данные пользователя». Мои команды следующие:

#!/bin/bash
sudo yum update -y
aws s3 cp s3://mynotebook notebooks/ --recursive
nohup jupyter notebook

Когда я получаю доступ к запущенному экземпляру, пространство на жестком диске используется, как если бы файлы были скопированы, но я не могу их найти!

Если я запускаю экземпляр, затем SSH в машину и запускаю эти команды, жесткий диск имеет тот же размер, что и первый метод (как и ожидалось), НО, файлы доступны в каталоге записных книжек, что также является ожидаемым результатом.

Куда эти файлы попадают при использовании команды запуска? Кроме того, блокнот jupyter НЕ запускается как часть команды nohup. Я не могу использовать эти команды при запуске?

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Проблема

Пользовательские данные запускаются от имени пользователя root, поэтому эти файлы принадлежат пользователю root и создаются в корневом каталоге "/" (не в домашнем каталоге вашего пользователя "~"). Из документации AWS:

Сценарии, введенные как пользовательские данные, выполняются как пользователь root, поэтому не используйте команду sudo в сценарии. Помните, что любые файлы, которые вы создаете, будут принадлежать пользователю root; если для доступа к файлу требуются пользователи без полномочий root, необходимо соответствующим образом изменить разрешения в сценарии.

Документация по данным пользователя AWS

Что вы можете сделать?

Чтобы иметь доступ к вашим файлам, у вас есть два варианта:

  1. Использовать root [ не очень хорошая идея для постоянного решения ]

Чтобы убедиться, что причиной вашей проблемы являются права доступа к файлам, перейдите к пользователю root и проверьте наличие файлов в корневом каталоге.

Во-первых, подключитесь к компьютеру с помощью вашего обычного пользователя (ec2-user, ubuntu и т. Д.):

ssh -i key.pem ec2-user@<your_ec2_public_dns_or_ip>

Затем перейдите к пользователю root:

sudo su

Ваш запрос терминала изменится на «#», указывая на переключатель. Переключиться в корневой каталог:

cd /

Теперь перечислите все файлы и каталоги с их разрешениями:

ls -al

Убедитесь, что ваши файлы там. Также обратите внимание на имя владельца «root».

Как только вы проверили проблему, давайте перейдем к фактическому решению; изменение владельца и местоположения загружаемых файлов.

  1. Изменить владельца и расположение копируемых (загружаемых) файлов.

Предполагая, что у вас есть обычный пользователь с именем ec2-user , измените ваш скрипт следующим образом:

#!/bin/bash
sudo yum update -y

# Change to the user's home directory
cd /home/ec2-user

# A directory called notebooks will be created in the current directory; ie, /home/ec2-user
aws s3 cp s3://mynotebook notebooks/ --recursive

# Change the owner and group of the notebooks' directory and all its children
chown --recursive ec2-user:ec2-user notebooks

# Run jupyter as the ec2-user
runuser -l ec2-user -c 'nohup jupyter notebook'

# TODO Extract the ec2-user value to a variable

Ресурсы

Используйте chown, чтобы установить владельца всех подпапок и файлов папки?

Команда запуска Linux от имени другого пользователя

0 голосов
/ 06 сентября 2018

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

#!/bin/bash
yum update -y
aws s3 cp s3://notebooks /home/ec2-user/notebooks/ --recursive
chown --recursive ec2-user:ec2-user /home/ec2-user/notebooks/
runuser -l ec2-user -c 'nohup jupyter notebook'
0 голосов
/ 05 сентября 2018

При копировании первым способом файлы копируются и принадлежат пользователю root.

У вас есть доступ к файлам? Используйте «chown», чтобы изменить владельца файлов, если это необходимо.

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