У меня две системы: одна работает под управлением Ubuntu 11.04, а другая - под управлением 10.04 LTS. Одна и та же конфигурация на обеих машинах дает разные результаты. Компьютер 10.04LTS не может найти мои файлы учетных данных AWS.
11.04
export | grep EC2
declare -x EC2_CERT="/home/jdw/.ec2/cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem"
declare -x EC2_HOME="/opt/ec2-ami-tools-1.3-66634"
declare -x EC2_PRIVATE_KEY="/home/jdw/.ec2/pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem"
ls -al /home/jdw/.ec2/
total 16
drwxr-xr-x 2 jdw jdw 4096 2011-08-18 13:31 .
drwxr-xr-x 58 jdw jdw 4096 2011-09-23 10:24 ..
-rw-r--r-- 1 jdw jdw 916 2011-08-18 13:30 cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem
-rw-r--r-- 1 jdw jdw 928 2011-08-18 13:30 pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem
/usr/bin/ec2-consistent-snapshot --description "Autosnapshot root" vol-283d5246 --region us-west-1 snap-0c679a62
10.04 LTS
export | grep EC2
declare -x EC2_CERT="/root/.ec2/cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem"
declare -x EC2_HOME="/mnt/ec2-api-tools-1.4.4.2"
declare -x EC2_PRIVATE_KEY="/root/.ec2/pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem"
ls -al /root/.ec2
total 16
drwxr-xr-x 2 root root 4096 2011-09-23 10:50 .
drwx------ 8 root root 4096 2011-09-23 10:50 ..
-rw-r--r-- 1 root root 916 2011-09-23 10:11 cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem
-rw-r--r-- 1 root root 928 2011-09-23 10:47 pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem
/usr/bin/ec2-consistent-snapshot --description "Autosnapshot root" vol-283d5246 --region us-west-1 ec2-consistent-snapshot: ERROR: Can't find AWS access key or secret access key at /usr/bin/ec2-consistent-snapshot line 97.
Я предполагаю, что мне не хватает какой-то зависимости от поля 10.04, но мне не удалось найти то, что могло бы меня. Единственная зависимость, с которой я столкнулся, - это PERL_MM_USE_DEFAULT = 1 cpan Net :: Amazon :: EC2, который присутствует на обеих машинах.
Дальнейшая информация.
Кажется, что, несмотря на то, что мои переменные среды установлены правильно, ec2-согласованный моментальный снимок ищет мой ключ в файле с именем .awssecret
open ("/ root / .awssecret", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога) write (2, "ec2-consisten-snapshot: ERROR:" ..., 124) = 124 exit_group (2) = ? ~
И похоже, что предоставление учетных данных из командной строки обрезает имена учетных данных:
execve ("/ usr / bin / ec2-согласованный-моментальный снимок", ["/ usr / bin / ec2-согласованный-моментальный-снимок", "--aws-access-key-id-file", "/root/.ec2/ cert-PJU5MW2PCN44GRAV "...," --aws-secret-access-key-file "," /root/.ec2/pk-PJU5MW2PCN44GRAVIV "...," --description "," Autosnapshot SMC root "," vol-283d5446 "," --region "," us-west-1 "], [/ * 21 vars * /]) = 0
Я попытался использовать более короткие имена и имя .awssecret для файлов pem, и это удаляет условие «не удается найти», но приводит к ошибке «не удается проверить учетные данные». Поэтому я считаю, что устранение основной ошибки, скорее всего, устранит вторичную.
Я уверен, что это какая-то недостающая библиотека или что-то в моей системе 10.04.
Я вижу, в чем дело. Это очень распространено на AWS, и я даже не заметил, когда впервые прочитал ваше описание. Вы передаете неправильные объекты учетных данных в параметрах командной строки.
Программа ec2-согласованного моментального снимка требует «Идентификатор ключа доступа» и «Секретный ключ доступа». Эти значения полностью отличаются от значений «Сертификат» и «Закрытый ключ», хотя они используются для достижения той же цели.
Вот статья, которую я написал, в которой пытается объяснить многие из различных учетных данных и где их найти:
Общие сведения об учетных данных для доступа к AWS / EC2
http://alestic.com/2009/11/ec2-credentials
Я автор / сопровождающий ec2-согласованный снимок (с благодарностью другим разработчикам исправлений) и будет первым, кто признает, что он слишком сильно пытается найти ваши учетные данные AWS, выполняя поиск во многих местах. К сожалению, существует некоторая согласованность в том, где инструменты Amazon и другие сторонние инструменты рекомендуют вам вводить свои учетные данные. Моя цель состояла в том, чтобы избежать усугубления этой проблемы, поэтому я решил, что было бы хорошо поискать в нескольких наиболее распространенных местах и использовать первые найденные учетные данные.
Это хорошо работает для большинства сценариев, но может вызвать проблемы, если у вас есть несколько разных учетных данных AWS, хранящихся в вашей файловой системе, переменных среды и переменных среды, указывающих на файловую систему.
Программное обеспечение делает несколько неудачных решений относительно определения приоритетов, которые должны перекрывать другие значения. Например, похоже, что вы указываете --aws-access-key-id-file в командной строке, но это будет переопределено переменной $ AWS_ACCESS_KEY_ID, если она установлена. Параметры командной строки должны переопределять параметры среды или файловой системы, но в этом случае это сбивает с толку, потому что это конкретное значение, указанное в среде, а не путь к файлу, указанный в командной строке, и он выбирает определенные значения вместо значений, хранящихся где-то в файле.
Включите параметр командной строки --debug и найдите выходные данные отладки с такой информацией, как:
ec2-consistent-snapshot: Using AWS access key: ...
Если это правильный идентификатор ключа доступа, вы можете захотеть отредактировать программу и сразу после этого добавить строку отладки, которая выводит секретный ключ доступа. Если это неправильный идентификатор ключа доступа, вам нужно просмотреть разные места, где программное обеспечение ищет учетные данные AWS (см. Справочную страницу), и найти, где оно получает эту информацию.
Примечание. Я не думаю, что в вашей строке отладки учетные данные на самом деле усекаются в программном обеспечении. Я считаю, что это всего лишь отладчик, говорящий о том, что фактически переданные значения были длиннее, чем он хотел показать.
Это решено. Спасибо @eric за то, что познакомил меня с учетными данными.
Вся проблема переменных среды и переменных командной строки была для меня красной селедкой. Оказывается, рабочий модуль 11.04 работал, потому что в какой-то момент я поместил свои учетные данные AWS в файлы .awssecret в моем домашнем каталоге. Тот факт, что я также установил множество переменных окружения, не имел значения.
Как только я установил для своего файла .awssecret те же значения, что и в поле 10.04, все стало хорошо.
Оказывается, что для правильно отформатированного файла .awssecret нет необходимости в следующих переменных среды:
EC2-CERT, EC2_PRIVATE_KEY, AWS_ACCESS_KEY_ID или AWS_SECRET_ACCESS_KEY установлены вообще.