После регистрации на amazon.com/aws у нас есть : Access Number, Access Key ID, Secret Access Key, X.509 Certificate pk-XXXXXX.pem, X.509 Certificate file cert-XXXXXX.pem ( физический смысл этих ключей обсудим позже ). Попробуем создать окружение для работы с веб-сервисами Amazon для Windows:1) Создаем папку с:\ec2 куда инсталлируем ( распаковываем ) Amazon command line tools, добавляем в закладки Command line tools reference
2) Устанавливаем Java Runtime Environment, putty
3) Cоздаем в с:\ec2 batch-файл ec2.bat состоящий из
@echo off
set EC2_HOME=c:\ec2
set PATH=%PATH%;%EC2_HOME%\bin
set EC2_PRIVATE_KEY=c:\ec2\PrivateKey.pem
set EC2_CERT=c:\ec2\509Certificate.pem
set JAVA_HOME=C:\Program Files\Java\jre1.6.0_03
“%JAVA_HOME%\bin\java” -version
где privatKey.pem это pk-xxxx.pem, а 509Certificate.pem это cert-xxxx.pem ( так короче ), JAVA_HOME – то куда мы установили jre.
4) Запускаем через Command line promt c:\ec2\ec2.bat
Если мы видим что похожее на
java version “1.6.0_03″
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)
JRE работает, если нет – скорее всего надо снести все имеющиеся jre и поставить с sun самый свежий
5) Пробуем воспользоваться amazon command line tools : запускаем в том command line promt где стартовала jre команду :
C:\ec2>ec2-describe-images -x all
Эта команда выводит список доступных образов ( у меня эта команда выводит почти тысячу общедоступных public образов )

Если видим подобную картину, то значит всё работает хорошо.
6) Попробуем запустить сервер ( instance ) – для этого получаем список образов владелец которых amazon :
C:\ec2>ec2-describe-images -o amazon
И выбираем из этого списка образ c “getting-started.manifest.xml”
IMAGE ami-2bb65342 ec2-public-images/getting-started.manifest.xml amazon available public i386 machine
Имя instance – это ami-2bb65342
7) Создаем (запускаем) instance указывая в качестве параметра имя.
C:\ec2>ec2-run-instance ami-2bb65342
должно быть что то вроде
C:\ec2>ec2-run-instances ami-2bb65342 -k gsg-keypair
RESERVATION r-3be02b52 841167328091 default INSTANCE i-d2c719bb ami-2bb65342 pending gsg-keypair 0 m1.small 2008-08-06T13:43:45+0000 us-east-1b
Имя созданного instance – i-d2c719bb.
Ждем некоторое время и проверяем состояние созданного instance
C:\ec2>ec2-describe-instances i-d2c719bb
RESERVATION r-3be02b52 841167328091 default
INSTANCE i-d2c719bb ami-2bb65342 ec2-67-202-18-11.compute-1.amazonaws.com domU-12-31-38-
00-3A-44.compute-1.internal running gsg-keypair 0 m1.small 2008-08-06T13:43:45+00
00 us-east-1b
Имя ( видимое снаружи ) созданного instance это ec2-67-202-18-11.compute-1.amazonaws.com.
Если проверить состояние instance сразу после создания, то его статус будет pending – т.к. запуск instance и загрузка ОС занимает какое то время.
9) Пробуем получить доступ к созданному instance по http – открываем 80 порт ( для всех создаваемых нами instance )
C:\ec2>ec2-authorize default -p 80
GROUP default
PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0_
Теперь в браузере можно открыть http://ec2-67-202-18-11.compute-1.amazonaws.com
В браузере вы должны увидеть страничку по умолчанию от Fedore

10) Получаем доступ к ec2-67-202-18-11.compute-1.amazonaws.com по ssh. Открываем 22 порт :
C:\ec2>ec2-authorize default -p 22
GROUP default
PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
11) Настраиваем putty :
- генерим пару ключей для ssh ( на основе цифровых сертификатов )
c:\ec2>ec2-add_keypair test_keypair
где test_keypair – это имя которое мы хотим дать генерируемой пар ключей
эта команда выводит в консоль приватный ключ – выглядит это примерно так ( замазано мной – это же реальный ключ
)

Копируем этот ключ прямо из консоли (-как есть ) и сохраняем в файл my_private_key_data – я советую сохранять этот файл навсегда – он может понадобиться например в случае если Вы работаете в группе и Вашим коллегам понадобится доступ к созданным Вами instance – в этом случае Вам надо будет поделиться ключами – и секретным и публичным. Запускаем puttygen и открываем в нем этот файл (my_private_key.ppk ) – пункт меню “load private key file”. Теперь сохраняем публичный ключ ( save public key ) и приватный ключ ( private key ) – например в c:\ec2\public_key_putty и c:\ec2\private_key.ppk – внимание private_key.ppk отличается от my_private_key_data потому что у putty свой формат хранения ключей ( в том числе и для такой конвертации ключей в формат putty и используется puttygen ). Этот private_key.ppk прописываем в putty в качестве приватного ключа

В качестве имени машины указываем ec2-67-202-18-11.compute-1.amazonaws.com – после коннекта терминал будет спрашивать имя юзера – root. Пароль спрашивать не должен. Настройки WinSCP выполняем аналогичным образом.
ps. Здесь можно найти пример установок для Linux.
pps. В случае если с amazon EC2 работает группа разработчиков возникает ряд проблем связанных с разделением ключей ( для того чтобы получить доступ к instance необходимо иметь приватный ключ такой же который был указан при создании instance ( точнее один из тех ключей которые лежат в /root/.ssh ) ). Я рекомендую особенно не мудрстовать с разделением прав доступа и организацией групп пользователей с разными правами и ключами, а просто раздать всем одну пару ключей ( плюс соответсвующие им putty ключи ) – это значительно упрощает жизнь.
Если же так получилось что все используют разные ключи и команда ec2-describe-keypairs выводит список из нескольких используемых в системе ключей всегда ( особенно при ec2-run-instance ) используйте ключ -k my_keypair для явного указания пары ключей, иначе инстанс будет запущен с ключами по умолчанию и они скорее всего не являются вашими ключами и соответственно ssh доступа к запущенному instance не будет.
Andrey says:
Спасибо за статью.
А какое у вас мнение о стабильности этого сервиса? Наверняка ведь бывают и даунтаймы. Работает ведь на том же самом реальном железе.
Еще вопрос. Насколько я знаю у Амазона есть дата-центр в Европе. Можно ли выбирать в каком ДЦ будет размещен мой инстанс?
Reply
alexey bokov Reply:
March 31st, 2009 at 10:45 pm
Стабильность на самом деле вполне на уровне, официальная позиция амазона по этому поводу вкратце состоит в том что они рекомендуют для критически важных вещей двойное дублирование, что в общем то оправдано. Жизнь показывает что построить проекты ( или частично базировать например back-end ) на базе amazon ec2 для серъезных 24×7 проектов с высокой нагрузкой более чем реально – “живые” примеры реального продакшна есть – так что бояться нечего. Выбирать в каком ДЦ будет размещен инстанс естественно можно – Feature Guide: Amazon EC2 Availability Zones
Reply