После регистрации на 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 образов )
ec2-describe-images
Если видим подобную картину, то значит всё работает хорошо.

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.

8) Ждем некоторое время и проверяем состояние созданного 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 – это имя которое мы хотим дать генерируемой пар ключей
эта команда выводит в консоль приватный ключ – выглядит это примерно так ( замазано мной – это же реальный ключ :-) )
ec2-add-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 не будет.

2 Comments

  1. Andrey says:

    Спасибо за статью.
    А какое у вас мнение о стабильности этого сервиса? Наверняка ведь бывают и даунтаймы. Работает ведь на том же самом реальном железе.
    Еще вопрос. Насколько я знаю у Амазона есть дата-центр в Европе. Можно ли выбирать в каком ДЦ будет размещен мой инстанс?

    Reply

    alexey bokov Reply:

    Стабильность на самом деле вполне на уровне, официальная позиция амазона по этому поводу вкратце состоит в том что они рекомендуют для критически важных вещей двойное дублирование, что в общем то оправдано. Жизнь показывает что построить проекты ( или частично базировать например back-end ) на базе amazon ec2 для серъезных 24×7 проектов с высокой нагрузкой более чем реально – “живые” примеры реального продакшна есть – так что бояться нечего. Выбирать в каком ДЦ будет размещен инстанс естественно можно – Feature Guide: Amazon EC2 Availability Zones

    Reply

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes