Рубрики
aws Конспект

Конспект: AWS

0. Инфраструктура:

https://www.youtube.com/watch?v=8jbx8O3wuLg&list=PLg5SS_4L6LYsxrZ_4xE_U95AtGsIB96k9 - видео материал по AWS

Расположение серверов и дата центров ... 
Region - Географическое место расположения
Availability Zone - Изолированный Дата центр (в каждом регионе как минимум их два)

Пример:
Region         AZ Availability Zone
us-west-1      (us-west-1a, us-west-1b, us-west-2c ...)
us-east-2      (us-east-2a, us-west-2b, us-west-2c ...)
ca-central-1   (ca-central-1a, ca-central-1b)
eu-west-1      (eu-west-1a, eu-west-2b)


https://aws.amazon.com/ru/about-aws/global-infrastructure/regions_az/

1. Сервисы / Услуги :

0. Amazon EC2 - Elastic Clud - виртуальные сервера (инстансы) Windows \ linux
1. Elastic Load Balancing - балансировка
2. AWS Elastic Beanstalk - инструменты devops / автоматизация
3. Amazon CloudFront - как бы виртуальный кеш вашего сервера 
4. Amazon CloudWatch - мониторинг вашей инфраструктуры
5. Amazon S3 - Simple storege server - хранилище по типу dropbox
6. Amazon Glacier - хранение архивов данных
7. Amazon EFS - общее хранилище для виртуальных машин
8. Amazon CloudFormation - инструменты devops \ инфраструктура в коде \ автоматизация
9. AWS OpsWorks - инструменты devops \ chef (что то типа ansible)
10. Amazon RDS - базы данных SQL, MSSQL, MySQL, postgre
11. Amazon DynamoDB - база Amazon по типу noSQL
12. Amazon Redshift - система анализа данных
13. Amazon EMR - работа с большими данными BIG DATE
14. IAM - управление пользователями (похоже на MS windows AD)
15. Amazon VPC - сеть , виртуальные сети, создание сетей, маршрутов, vpn, и т.д.
16. Amazone Route 53 - это DNS серверы, покупка доменов, добавление доменов, динамический DNS, балансировка по DNS
17. Amazon SES - Amazon Simple Email Service  - почтовые сервера 
18. Amazon SNS - Amazon Simple Notification Service  -  уведомления, почта, sms и т.д. (часто используют с  Amazon CloudWatch)
19. Amazon SQS - Amazon Simple Queue Service - сервис принимает очереди сообщений для хранения












2. Открытие бесплатного аккаунт Free Tier

# Внимание понадобится кредитная карта 
https://aws.amazon.com/ru/

3. Первая настройка.

Первым делом в консоле AWS идем в настройки пользователей, пишем в поиске IAM.
Создаем пользователей и группы.
IAM - управление пользователями (похоже на MS windows AD)

MFA - это включения двух факторной аутентификации, нужно будет на телефон установить ПО.


4. Рекомендации по windows 2016+ в AWS EC2 для быстродействия

Set-MpPreference -DisableRealtimeMonitoring $true - отключить антивирус мс
Uninstall-WindowsFeature -Name Windows-Defender - удалить антивирус от мс

5. EC2 при создании instance рекомендуется создавать TAG

# !!! EC2 при создании instance рекомендуется создавать TAG 
# !!! будет проще понять что за диски и т.д.
Name  WEB-SERVER


6. Amazon linux установка apache2

cd /var/www - перейти в каталог веб по умолчанию
sudo yum install httpd - установка
sudo service httpd start - запуск сервера
chkconfig on - добавить автозагрузку

7. awc cli install ( aws console )

Ubuntu:  sudo apt-get install awscli
RedHat: sudo yum install awscli

На windows должен быть установлен python
Также на Linux и Windows можно установить через Python:
pip install awscli


aws --version - для проверки после установки

8. AWS ssh подключение:

Для ubuntu пользователь по умолчанию ubuntu
Для всех остальных unix пользователь по умолчанию ec2-user
Подключатся по ssh к у вас должен быть файл pem. Генерируется при создании виртуалки.
Также добавить новый \ импортировать старый можно в разделе EC2 -> Network & Security -> Key PairsNew

9. aws cli use \ использование:

!!! У пользователей aws два вида доступа: консоль aws и программный.
!!! "Access key ID" и "Secret access key" нужен для программного доступа.
Нам понадобится Access key ID и Secret access key.  
Мы их получаем при создании пользователя.
Так же мы их можем получить в оснастке IAM -> user -> Security credentials -> Create access key 
!!! Внимание  Secret access key подсмотреть получится только один раз при создании, если не записали придется пересоздать заново.

Запускаем консоль awscli куда мы ее там поставили.
Пишем:
aws configure

У нас попросят:
Access key ID: ввести учетные данные
Secret access key: ввести учетные данные
регион: (можно посмотреть в оснастке EC2, или прям в ссылке https://eu-west-1.console.aws.amazon.com/ec2/v2/home?region=eu-west-1#Instances: то есть region=eu-west-1)
предпочитаемый формат: yaml \ json \ text \ table

Пример:
ubuntu@ip-XXX-XXX-43-187:~$ aws configure
AWS Access Key ID [None]: XXXXZ7IWZ3YRXZDPXXXX
AWS Secret Access Key [None]: XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX
Default region name [None]: eu-west-1
Default output format [None]: json


Что произойдет?:
В домашнем каталоге пользователя будет создан каталог .aws
В каталоге .aws будет два файла: config и credentials

содержимое config
ubuntu@ip-XXX-XXX-43-187:~/.aws$ cat config
[default]
region = eu-west-1
output = json

[profile reader]
region = eu-west-1
output = json

[profile writer]
region = eu-west-1
output = json

[profile pofig]
region = eu-west-1
output = json


содержимое credentials
ubuntu@ip-XXX-XX-43-187:~/.aws$ cat credentials
[default]
aws_access_key_id = XXXXZ7IWZ3YRXZDPXXXX
aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX

[write]
aws_access_key_id = XXXXZ7ZWZ3YRXZDPXXXA
aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX

[reader]
aws_access_key_id = XXXXZ7IZZ3YRXZDPXXXZ
aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX

[pofig]
aws_access_key_id = XXXXZ7IWZ3YRXZDPXXXV
aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX


Далее теперь мы можем использовать команды aws
aws ec2 describe-instances - покажет все сервера в EC2 
aws ec2 describe-regions -  показать все регионы

10. S3 bucket (вёдра)

S3 - Simple Storage Service 
гарантируется: 99.99% availability (если файл нужен то вероятность его получения 99.99%)
гарантируется: 99.999999999 durability (гарантируется что файлы не пропадут 99.999999999% и будут доступны в будущем)

Используются для:
Backup & Recovery
Data Archiving
Big Data Analytics
Статические Web Sites
Internet Share Drive

Максимальное коли-во bucket-ов 100. Всегда можно попросить увеличить.

Максимальный размер файла / объекта 5Tb
Максимальный размер файла за один PUT = 5GB 
Большие файлы можно загружать через MultiParUpload (специальная команда)

Типы хранения файлов / объектов:
1 - Amazon S3 Standart
2 - Amazon S3 Standart - infrequent Access

3 - Reduced Redundancy Storage 

4 - Amazon Glacier ( ледник \ очень долгое хранение файлов \ но доступ к архиву по запросу ( может быть до 5 часов))

Что такое bucket?!
По сути это просто папка. 
Для которой можно настроить тип хранения. 
Права доступа.

Bucket policy - тонкая настройка прав на backet, по кнопке "Policy generator" можно генерировать политики доступа. (формат json, можно использовать спецсимволы, звездочка "*" все)

Versioning \ Logging \ Static web hosting \ Tags \ Cross-region replication \ Transfer acceleration \ Events \ Requester pays 

Versioning - при включении появляется возможность восстановить удаленный файл - как бы резервное копирование - включается один раз на backet, отключить не возможно, можно приостановить. (для работы требуется Versioning)

Cross-region replication - (Managment -> Cross-region replication) - позволяет делать репликации файлов из одного региона в другой. Реплики создаются только новых файлов.

lifecycle - (Managment -> lifecycle) - позволяет настроить автоматический перенос в хранилище по дешевле (от Standart до Glacier), а так же удалять старые версии файлов и очистить хранилище  


Static Web Site - использовать s3 backet как веб хостинг (простой html\css)

10. S3 bucket (вёдра) используем awscli

aws s3 mb s3://myb.hellow.world - создать bucket с именем  myb.hellow.world (будет использоваться профиль по умолчанию default)

aws s3 mb s3://myb.hellow.writer  --profile=writer - создать bucket с именем  myb.hellow.writer  используя профиль writer

aws s3 mb s3://myb.hello.writer1 --region=us-west-2 --profile=writer - создать bucket с именем  myb.hello.writer1  используя профиль writer в регионе us-west-2

aws s3 ls - показать все доступные  bucket

aws s3 ls --profile=writer - показать все доступные  bucket используя профиль writer

aws s3 cp ОТКУДА КУДА -  скопировать файл (можно использовать спец символы. Например точка "." - текущий каталог и т.д.)

aws s3 cp 1.jpg  s3://myb.hello.writer1  -  скопировать файл 1.jpg в bucket с именем myb.hello.writer1

aws s3 sync . s3://myb.hellow.world - выполнить синхронизацию всех файлов из текущей директории(спец символ точка ".")  с bucket с именем myb.hellow.world 

11. EC2 Виртуальные серверы (Elastic Compute Cloud)

!!! Elastic - в aws все эластик. Изменяемый: размер, кол-во, производительность, качество, все... 
instance - серверы

виды:
Instances  ---> On Demand (для тестов, дорого, следующий логичный переход это на Reserved )
Spot Requests ---> Spot
Reserved Instances ---> Reserved(1-3years) (на долгий срок и дешевле на 70% при полной оплате)
Dedicated Hosts ---> Вас переместят на отдельный сервер \ как бы аренда железного сервера \ полезно для ПО которое  использует привязку к железу для своей защиты лицензии
Scheduled Instances ---> Scheduled Reserved(daily, weekly, mounthly)

!!!On Demand ---> Оплата серверов по часовая. Даже если вы его включили на 5 минут.
!!!Spot ---> Ставки \ Работают по определенному времени \ договору \ деньгам \ по часовая оплата \ за последний час если такой Spot instance падает по вине aws (например поднялась цена) вы не платите
!!!Reserved ---> Контракт на несколько лет(от одного до трех лет) и три вида оплаты: Оплата сейчас; Оплата частично(частями); Полная оплата(на 70% дешевле).

Типы серверов:
t2.nano - 1vCPUs - 0.5(GiB) RAM 
t2.micro - 1vCPUs - 1(GiB) RAM 
t2.small - 1vCPUs - 2(GiB) RAM 
t2.medium - 2vCPUs - 4(GiB) RAM 

T - General Purpose 
M - General Purpose
C - Compute Optimized (производительнее чем T,M)
F - FPGA OPtimized (что-то для программистов)
G,P - GPU Optimized (сервера с видеокартами)
X,R - RAM Memory Optimized (сервера на которых много оперативки)
D,I - Storage Optimized
!!!Тип сервера всегда можно изменить (выключаешь instance и меняешь его тип)


2 - второе поколение сервера

1vCPUs ~ 2.5Ghz (естественно не для всех типов)


EBS - Elastic Block Store - диски
Типы дисков / два вида / можно загружаться root-boot / нельзя загружаться other:
Root-boot:
General Purpose SSD (GP2) up to 10.000 iops - Быстрые
Provisioned IOPS SSD (IO1) up to 20.000 iops - Очень быстрые
Magnetic - медленно

other:
General Purpose SSD (GP2) up to 10.000 iops - Быстрые
Provisioned IOPS SSD (IO1) up to 20.000 iops - Очень быстрые
Cold HDD (SC1) - медленно - тот же Magnetic
Throughput Optimized HDD (ST1)- медленно - тот же Magnetic только более производительный
Magnetic - медленно

12. AWS — виртуальные серверы EC2 — volume, snapshot

Instance - виртуальный сервер
Volume - HDD/SSD диск
Snapshot - резервная копия volume
AMI - резервная копия instance

AMI - Amazon Machine image (GOLDEN COPY)

Загрузится с диска snapshot не возможно. Snapshot можно подключить диском к любому instance.

Для полной резервной копии(которую можно будет загрузить) нужно выполнить AMI.
 
Snapshot можно скопировать в другой регион, подключить диск к пк.
AMI - можно скопировать в другой регион и там развернуть instance.
При создании AMI создаются snapshot'ы volums...

13. bootstrapping

Bootstaraping - позволяет при установке Instance выполнить любой скрипт. 
Скрипт запускается только один раз при установке Instance.

New Instance -> Configure Instance Details -> Advanced Details -> User data


Для Linux (Amazon) пример скрипта bash для bootstrapping
#!/bin/bash
echo "---start---"
yum -y update
yum -y install httpd
echo " 

hello world

" > /var/www/html/index.html service httpd start chkconfig httpd on cat netumenya.txt echo "UserData executed on $(date)" >> /var/www/html/log.txt echo "---finish---" Лог выполнения скрипта можно посмотреть в instance: less /var/log/cloud-init-output.log Для Windows это могут быть скрипты bat или ps1. Пример скрипта на powershell для bootstrap instance windows: Write-Host "----START of PowerShell Script------" Add-WindowsFeature web-server Set-Content c:\Users\Administrator\Desktop\test.txt "UserData executed on $(Get-Data)" Rename-Computer -NewName MYCOMPUKTER Add-Content c:\User\Administrator\Desktop\test.txt "------TestFile-------" Get-Service | Out-File c:\Users\Administrator\Desktop\test.txt -Append | Format-Table Test-Connection www.google.com | Out-File c:\Users\Administrator\Desctop\test.txt -Append | Format-Table Write-Host "----END of PowerShell Script" Лог выполнения скриптов в Windows искать тут: Windows 2019: C:\ProgramData\Amazon\EC2-Windows\Launch\UserdataExecution.log Windows 2016: C:\ProgramData\Amazon\EC2-Windows\Launch\UserdataExecution.log Windows 2012: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt Windows 2008: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt С каким скриптом запускался instance всегда можно посмотреть. #### раньше так было Instance -> ПКМ на Instance -> View/Change User Data Instance -> ПКМ на Instance -> Instance settings -> Edit User Data












13. EC2 и IAM Roles \ роли

Роли позволяют настроить различные права доступа. 
Роли глобальные, действуют на все регионы и instance.
Роль к instance можно подключить только одну.
Роль можно подключить при установке instance.


AWS service - EC2, Lambda and others
Another AWS account - Belonging to you or 3rd party
Web identity - Cognito or any OpenID provider
SAML 2.0 federation - Your corporate directory

для чего \ куда дать \ какие права доступа

EC2 \ S3 bucket \ S3FullAccess
EC2 \ S3 bucket \ S3ReadOnly

14. AWS IP адресация

Private IP - адрес доступный внутри сети ( внутренний \ локальный \ за маршрутизатором )
Public IP - адрес доступный в интернете (внешний)
Elastic IP - адрес доступный в интернете

Private IP - ПК доступен в внутренней сети vpc, постоянный и не изменяется
Public IP - ПК доступен в интернете, временный, Изменяется при Stop\Start не изменяется при Reboot сервера
Elastic IP - ПК доступен в интернете, постоянный и не изменяется, если создали и не прикрепили к ПК то будете платить деньги за этот IP, максимально по умолчанию у вас может быть 5 таких адресов.




15. Данные о сервере EC2 http://169.254.169.254/lates/meta-data/

Можно получить данные: ami-id, ami-launch-index, ami-manifest-path, block-device-mapping/ , events/ , 
hibernation/, hostname, identity-credentials/, instance-action, instance-id, instance-life-cycle, instance-type,
local-hostname, local-ipv4, mac, metrics/, network/, placement/, profile, public-hostname, public-ipv4, public-keys/,
reservation-id, security-groups и многое другое...

Примеры для linux:
curl http://169.254.169.254/
curl http://169.254.169.254/lates/meta-data/
curl http://169.254.169.254/lates/meta-data/local-ipv4
curl http://169.254.169.254/latest/meta-data/mac

16. Elastic Load Balancer

балансировка http / https трафика

17. AWS Auto scaling Group

Авто клонирование серверов для улучшения производительности.

Horozontal scaling

Auto Scaling Group
Subnet in AZ - Какие AZ использовать для запуска серверов
Min - Минимальное количество Running серверов
Max - Максимальное количество Running северов
Desired - Желаемое текущее количество серверов (при запуске)
LoadBalancer - Какой EBL присоединить ко всем серверам
Scale OUT - Когда добавлять серверы
Scale IN - Когда убивать серверы