AWS Notes
5.59K subscribers
449 photos
42 videos
10 files
2.8K links
AWS Notes — Amazon Web Services Educational and Information Channel

Chat: https://t.iss.one/aws_notes_chat

Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/
Download Telegram
​​По результатам опроса - правильные ОС для работы с AWS:

1. RedHat (на котором, в частности, Amazon Linux) - около 50% проголосовавших.
2. Debian (на котором популярная Ubuntu) - около 40%.

Ну и невозможно удержаться от мема в тему.

#пятничное
Отличный практикум по Лямбде из командной строки:

https://github.com/nsriram/lambda-the-cli-way

Поэтапное усложнение - от HelloWorld и логов, до интеграции с другими сервисами и SAM (Serverless Application Model). В закладки однозначно.

#Lambda #aws_cli #tutorial
Сколько времени (примерно, обычно) вы тратите на то, чтобы добраться на работу (в одну сторону)?

#опрос
Если пересчитать, то в среднем дорога у читателей этого канала занимает 37 минут в одну сторону.
Работа с DynamoDB из aws-cli

Примеров работы из aws-cli с DynamoDB кот наплакал, особенно, когда нужны простые вещи, но выходящие за рамки примеров из документации.


create-table

Создадим простенькую таблицу для условного Jenkins, куда будем писать для каждого проекта (jenkinsProject) свои переменные для каждого билда (buildNumber). Для уменьшения стоимости (хоть и так будет около нуля) вместо дефолтного режима (PROVISIONED) сразу включим (PAY_PER_REQUEST).

Здесь и дальше предполагается, что настроен ~/.aws/config , иначе к каждому запросу добавляем регион --region eu-west-1 (и/или --profile my-profile)

aws dynamodb create-table \
--table-name jenkins \
--attribute-definitions \
AttributeName=jenkinsProject,AttributeType=S \
AttributeName=buildNumber,AttributeType=N \
--key-schema \
AttributeName=jenkinsProject,KeyType=HASH \
AttributeName=buildNumber,KeyType=RANGE \
--billing-mode PAY_PER_REQUEST



put-item

Запишем в таблицу значение для условного проекта aws-notes и билда номер 1 из ветки feature-1. Для получения текущего timestamp вручную выполним:

date +%s
1578575096

Получение timestamp можно добавить и сразу в команду, но так наглядней.

Сделаем выполнение сразу из строки, а не через отдельный файл для JSON (из-за этого не получится разбить строчку обратным слэшем - поэтому получится длинная):

aws dynamodb put-item --table-name jenkins --item '{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"}, "imageTag": {"S": "feature-1.build-1"}, "imageRepository": {"S": "123166313456.dkr.ecr.eu-west-1.amazonaws.com/aws-notes"}, "date": {"S": "2020-01-09 13:04"}, "timestamp": {"N": "1569486943"}, "branch": {"S": "feature-1"} }'

Переменных добавлено сразу много разных и больше условно, чисто для примера и чтобы удобней выбрать, удалив лишние.


update-item

Обновим билд 1, исправив в нём тэг и ветку (заменим 1 на ):

aws dynamodb update-item --table-name jenkins --key '{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"} }' --update-expression "SET #T = :t, #B = :b" --expression-attribute-names '{ "#T":"imageTag", "#B":"branch" }' --expression-attribute-values '{ ":t": {"S": "feature-1a.build-1"}, ":b": {"S": "feature-1a"} }'


...продолжение следует

#DynamoDB #aws_cli
Работа с DynamoDB из aws-cli

scan

Предположим, в таблице много билдов разных проектов. Получим все записи таблицы с ограничением максимум 100 значений.

aws dynamodb scan --table-name jenkins --max-items 100

Это будут все проекты, можно вывести лишь нужный, например, aws-notes с помощью #query:

aws dynamodb scan --table-name jenkins --query 'Items[?jenkinsProject.S==`aws-notes`]'


query

Сделать выборку по проекту jenkinsProject - получить все билды:

aws dynamodb query --table-name jenkins --max-items 100 --key-condition-expression "jenkinsProject = :jp" --expression-attribute-values '{":jp": { "S": "aws-notes" } }'

Как найти последнее значение билда (не обязательно совпадающее с количеством записей)? Для этого сделаем реверсивную выборку и получим последний элемент, выделив его с помощью #query и сделав таблицу:

aws dynamodb query --table-name jenkins --key-condition-expression "jenkinsProject = :jp" --expression-attribute-values '{":jp": { "S": "aws-notes" } }' --no-scan-index-forward --max-items 1 --query Items[].buildNumber.N[] --output table

-------
|Query|
+-----+
| 3 |
+-----+



delete-item

Удалим билд 1 из таблицы:

aws dynamodb delete-item --table-name jenkins --key '{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"} }'


delete-table

Удалим таблицу .

aws dynamodb delete-table --table-name jenkins


#DynamoDB #aws_cli
Неплохой наборчик AWS-безопасностей в докере набыстропопробовать:

https://github.com/z0ph/aws-security-toolbox

Elastic #Beanstalk обзавёлся своим Roadmap:

https://github.com/aws/elastic-beanstalk-roadmap/projects/1

И плагинчик под хром для тех, кто хочет отличать регион, где он работает в консоли, по цвету:

https://chrome.google.com/webstore/detail/aws-console-regions-color/gfeaclafcmbiakopneapkbaiifnhbkng
Приятно вот так вот, вечерком, в выходные, посидеть за чашечкой чая или кофе, почитать что-нибудь, почесывая тисипи об айпи, как где-то у кого-то на амазоне что-то не работает или глючит.

И чтобы завязка была, а потом всё в огне или детектив, и после обязательно, чтобы всех спасли, она согласилась, а саппорт ответил. Ну, а под занавес ба-бах - бестпрактисы из всех щелей и сплошной хэппи энд.

В общем, приятного чтения:

https://m.signalvnoise.com/aws-s3-youre-out-of-order/
Три новых Edge locations для CloudFront открылись недавно поблизости - в Венгрии, Румынии и Болгарии.

Львовщина, Ивано-Франковщина и Одесса радуются - Амазон подобрался совсем близко. Остальные же могут покрутить следующую ссылку, надеясь, что разноцветные отметки переползут когда-то и на их территорию:

https://www.google.com/maps/d/viewer?mid=1cj0vZ2YZJNp39MHIbstZT3QKPkl3Xgw2

#CloudFront
Отличная утилитка под SSM Session Manager для борьбы с ключами SSH на ваших инстансах (чтобы их не использовать):

https://github.com/xen0l/aws-gate

#SSM
Amazon EFS + IAM Authorization + Access Points

EFS серьёзно прокачался:

https://aws.amazon.com/blogs/aws/new-for-amazon-efs-iam-authorization-and-access-points/

Теперь, вслед за S3 Access Points у нас есть EFS Access Points и теперь можно переопределить все операции на своего юзера.

Другая фичиа - IAM Authorization, в том числе Resource-Based политики доступа для EFS, доступ к которому теперь можно рулить через IAM, аналогично с Amazon S3 bucket policies.

Но самое интересное, это что добавление доступа по IAM открывает прямую дорогу к появлению persistent storage для Fargate. Как раз при помощи свежевышедших фич. В общем, выделяем желудочный сок и ждём.

#EFS
По поводу обещанного анонса.

29 января у @AWS_ru третий день рождения. По такому прекрасному поводу москвичи и гости столицы могут лично послушать доклады от умных людей и пообщаться с коллегами по цеху. Те, кто не смогут приехать, могут расчитывать на трансляцию. Любители ставить докладчиков в неудобное положение своими каверзными вопросами могут расчитывать на призы. ^^

Регистрация: https://www.meetup.com/aws-ru/events/267985758/

Кто пойдет - обнимите от меня Стекова и Патрушева. 😉
P.S. При регистрации указывайте настоящие ФИО, чтобы безопасники Райфа лишний раз не нервничали.
Какой CI-продукт вы используете для работы с AWS?
Если несколько, то какой наиболее часто.

#опрос
Кто выбирает "Другой", будьте добры, напишите какой другой — либо в чат, либо Facebook. А то неизвестный Другой в тройке лидеров.
Уважаемые коллеги. Кто не знаком, позвольте представить заслуженного мастера спорта международного класса по IAM и другим видам амазоноборства, спикера крупнейших конференций и при этом надёжного информатора о том, что происходит у них там в Европах, Карена Товмасяна.

У Карена есть отличный канал @manandthemachine, где можно прочитать не только про AWS (этого и здесь хватает), но и про тяжёлую судьбушеньку нашего простого человека, попавшего в незаморскую страну Нидерландию. Плюсы, минусы, подводные камни - всё, как вы любите, короче. Не то, чтобы сам лично согласен с излагаемым там, однако это мнение с большой буквы Мэ и кому-то может быть от интересно до помочь.

https://t.iss.one/manandthemachine
CI/CD на AWS

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

Какие инструменты вы используете для CI/CD на AWS?

(можно выбрать несколько вариантов)

Jenkins - 65
👍👍👍👍👍👍👍👍 46%

GitLab CI - 47
👍👍👍👍👍 33%

AWS CodePipeline + Code* services - 12
👍 8%

Azure DevOps (Microsoft VSTS/TFS) - 3
👍 2%

Bitbucket Pipelines - 15
👍 10%

TeamCity - 15
👍 10%

Bamboo - 5
👍 3%

CircleCI - 5
👍 3%

Drone.io - 2
👍 1%

BuildMaster - 1
👍 0%

GoCD - 3
👍 2%

Travis CI - 2
👍 1%

GitHub Actions - 4
👍 2%

Codeship - 0
0%

Buddy - 0
0%

Wercker - 0
0%

Buildbot - 0
0%

Другой - 2
👍 1%

👥 141 people voted so far.
AWS IAM поломался:

Http request timed out enforced after 999ms

Impact is confirmed -- we are actively investigating.

Update: AWS IAM починился.

Between 7:30 AM and 9:45 AM PST, we experienced increased error rates due to higher latency for IAM requests. The system has recovered and is operating normally.
Действительное очень годная возможность не зря потратить какие-то выходные - удивительно качественный и при этом бесплатный контент.

https://www.youtube.com/watch?v=Ia-UEYYR44s

Ссылку на минус 10 часов личной жизни по доброте душевной презентовали в AWS User group Kazakhstan.