Опросы, которые вы пропустили
Кто не так давно сюда попал и нечем себя занять - можно пройти опрос и / или (если уже) посмотреть, как это сделали другие.
Недавний про язык
Cейчас: английский 71%, родной 19%, english 10%
Откуда вы
РФ 30%, Украина 29%, РБ 15%, Европа 13%, США 6%, Канада 5%, Азия 2%
Про AWS вендорлок
yes 73%, no 13%, wtf 14%
Ваши примерные расходы на не-прод окружения
десятая 9%, четверть 9%, треть 23%, половина 16%, больше половины 25%, нет прода 18%
Ваш уровень (важно для подачи материала здесь)
новички 34%, спецы 45%, профи 29%
#опрос
Кто не так давно сюда попал и нечем себя занять - можно пройти опрос и / или (если уже) посмотреть, как это сделали другие.
Недавний про язык
Cейчас: английский 71%, родной 19%, english 10%
Откуда вы
РФ 30%, Украина 29%, РБ 15%, Европа 13%, США 6%, Канада 5%, Азия 2%
Про AWS вендорлок
yes 73%, no 13%, wtf 14%
Ваши примерные расходы на не-прод окружения
десятая 9%, четверть 9%, треть 23%, половина 16%, больше половины 25%, нет прода 18%
Ваш уровень (важно для подачи материала здесь)
новички 34%, спецы 45%, профи 29%
#опрос
Найти файлы S3 бакета за декабрь месяц этого года (последние изменённые в диапазоне
aws s3api list-objects-v2 --max-items 20 --bucket my-aws-notes --query "Contents[?LastModified>='2019-12-01'] | [?LastModified<='2020-01-01'].{ File: Key, LastDate: LastModified }" --output table
#query
2019-12-01 - 2020-01-01), чтоб, если что, не слишком много, отобразить лишь 20 штук (--max-items 20), для красоты вывести табличкой (--output table) с указанием названий колонок File и LastDate (.{ File: Key, LastDate: LastModified }):aws s3api list-objects-v2 --max-items 20 --bucket my-aws-notes --query "Contents[?LastModified>='2019-12-01'] | [?LastModified<='2020-01-01'].{ File: Key, LastDate: LastModified }" --output table
#query
AWS купил Google
Вдруг кто пропустил новость (заголовок для привлечения внимания - всё также, только про курсы):
https://linuxacademy.com/news/general/a-cloud-guru-and-linux-academy-f-a-q/
То есть крупнейшая компания по курсам для IT направления A Cloud Guru поглотила своего конкурента LinuxAcademy.
https://acloud.guru/linux-academy
Потому, если вы не знали, у кого какой курс выбрать - от CloudGuru или LinuxAcademy, то вскоре не придётся мучаться (ответ - любой и попадёте туда же).
#курсы
Вдруг кто пропустил новость (заголовок для привлечения внимания - всё также, только про курсы):
https://linuxacademy.com/news/general/a-cloud-guru-and-linux-academy-f-a-q/
То есть крупнейшая компания по курсам для IT направления A Cloud Guru поглотила своего конкурента LinuxAcademy.
https://acloud.guru/linux-academy
Потому, если вы не знали, у кого какой курс выбрать - от CloudGuru или LinuxAcademy, то вскоре не придётся мучаться (ответ - любой и попадёте туда же).
#курсы
A Cloud Guru
Homepage
Leader in Azure, GCP, AWS cloud certification & training courses. Hands-on experience. Business & Individual plans, with Free plans available. Start learning today.
S3 Access Points - первый взгляд
Недавно появившиеся S3 Access Points стали попыткой начать избавляться от наследия S3 с её требованием к глобальной уникальности имени бакета (т.е. когда имя приходится каждый раз придумывать новое по каким-то паттернам, т.к. иначе получаем ошибку создания бакета).
Теперь же можно создавать и использовать условные "ссылки на бакет" - S3 Access Points. Такие ссылки имеют имя (например,
Технически попробовать просто - в S3 консоли переходите на вкладку S3 Access Points и создаёте endpoint с каким-то именем. Добавляете к нему #bucket_policy, как к обычному бакету, только в качестве ресурса нужно будет указать arn в виде (он указан на странице вашего Access Point):
"Resource": "arn:aws:s3:
Этот ресурс есть "ссылка на бакет" и к нему можно применять обычные команды #aws_cli (лишь с поправкой, что её придётся для этого обновить, иначе будет ругаться на имя бакета "Bucket name must match..."). Например, можно сделать привычный листинг
Однако в случае cross-account доступа крайне неудобно, т.к. приходится прописывать политики и на самом бакете и на каждой "ссылке" (Access Point). И #CRR (Cross-Region Replication) не работает для S3 Access Points.
И набор других особенностей и ограничений. Так что пока сырое, нужно учитывать данный момент.
Предположительный сценарий использования S3 Access Points - вы обрабатываете данные из одного (общего для всех, единственного) бакета, раздавая ссылки на него со своими политиками для каждого из окружений. Можно также как-то задействовать в Blue-Green сценариях и ещё какие-то специцифичные случаи.
В общем S3AP пополнили длинный список фич Амазона под названием "придумай зачем". Однако это шаг в правильном направлении и будучи допиленным, наверняка станет best practices, т.к. даёт дополнительную абстракцию, позволяя гибко управлять и избавляя от некоторых legacy ограничений.
#S3 #S3AP
Недавно появившиеся S3 Access Points стали попыткой начать избавляться от наследия S3 с её требованием к глобальной уникальности имени бакета (т.е. когда имя приходится каждый раз придумывать новое по каким-то паттернам, т.к. иначе получаем ошибку создания бакета).
Теперь же можно создавать и использовать условные "ссылки на бакет" - S3 Access Points. Такие ссылки имеют имя (например,
ext из примера), которое должно быть уникальным лишь в конкретном регионе и аккаунте. Что может быть удобным при использовании в мульти-аккаунт схеме, где одно приложение в одном аккаунте, значит можно спокойно использовать одинаковые имена (ссылки на бакет).Технически попробовать просто - в S3 консоли переходите на вкладку S3 Access Points и создаёте endpoint с каким-то именем. Добавляете к нему #bucket_policy, как к обычному бакету, только в качестве ресурса нужно будет указать arn в виде (он указан на странице вашего Access Point):
"Resource": "arn:aws:s3:
eu-west-1:896118698909:accesspoint/ext"Этот ресурс есть "ссылка на бакет" и к нему можно применять обычные команды #aws_cli (лишь с поправкой, что её придётся для этого обновить, иначе будет ругаться на имя бакета "Bucket name must match..."). Например, можно сделать привычный листинг
aws s3 ls arn_ссылки_на_бакет (на картинке). Однако в случае cross-account доступа крайне неудобно, т.к. приходится прописывать политики и на самом бакете и на каждой "ссылке" (Access Point). И #CRR (Cross-Region Replication) не работает для S3 Access Points.
И набор других особенностей и ограничений. Так что пока сырое, нужно учитывать данный момент.
Предположительный сценарий использования S3 Access Points - вы обрабатываете данные из одного (общего для всех, единственного) бакета, раздавая ссылки на него со своими политиками для каждого из окружений. Можно также как-то задействовать в Blue-Green сценариях и ещё какие-то специцифичные случаи.
В общем S3AP пополнили длинный список фич Амазона под названием "придумай зачем". Однако это шаг в правильном направлении и будучи допиленным, наверняка станет best practices, т.к. даёт дополнительную абстракцию, позволяя гибко управлять и избавляя от некоторых legacy ограничений.
#S3 #S3AP
SSM + Fargate
Тем, кто любит SSM - заслуживающий рассмотрения случай интеграции SSM с Fargate:
https://github.com/andrewkrug/fargate-ir
Конкретно здесь функционал предназначен для incident response, однако мне кажется, что это правильный подход в сторону унификации использования SSM, когда практики, характерные для ОС, распространяются также и на контейнеры.
#SSM #Fargate
Тем, кто любит SSM - заслуживающий рассмотрения случай интеграции SSM с Fargate:
https://github.com/andrewkrug/fargate-ir
Конкретно здесь функционал предназначен для incident response, однако мне кажется, что это правильный подход в сторону унификации использования SSM, когда практики, характерные для ОС, распространяются также и на контейнеры.
#SSM #Fargate
AWS + programming language
Если бы вы могли посоветовать один язык человеку, желающему сменить профессию и работать в будущем с AWS (без определённой области - от dev и ops до devops), какой бы это был?
Т.е. вот вопрос стоит тупо и ребром — ваш знакомый спрашивает, что ему, отягощённому в прошлом техническим высшим, нужно изучить, чтобы быть и зарабатывать как вы?
Отбрасывая общие рассуждения — какой конкретно язык, с высоты вашего текущего понимания, с учётом важности, популярности, денежности, перспектив и т.п. Только личный опыт (никаких популярностей по миру) и применительно (в любом виде) к AWS.
1. C/C++
2. Python
3. Go
4. Bash
5. Ruby
6. Java
7. JS
8. Другой
#опрос
Если бы вы могли посоветовать один язык человеку, желающему сменить профессию и работать в будущем с AWS (без определённой области - от dev и ops до devops), какой бы это был?
Т.е. вот вопрос стоит тупо и ребром — ваш знакомый спрашивает, что ему, отягощённому в прошлом техническим высшим, нужно изучить, чтобы быть и зарабатывать как вы?
Отбрасывая общие рассуждения — какой конкретно язык, с высоты вашего текущего понимания, с учётом важности, популярности, денежности, перспектив и т.п. Только личный опыт (никаких популярностей по миру) и применительно (в любом виде) к AWS.
1. C/C++
2. Python
3. Go
4. Bash
5. Ruby
6. Java
7. JS
8. Другой
#опрос
AWS + operating system
Какую ОС стоит посоветовать освоить человеку в первую очередь, желающему в будущем работать с AWS?
С чего начать, чтобы максимально (практически, перспективно, денежно) полезно?
Какое семейство дистрибутивов выбрать? Личный опыт и с учётом на будущее (а не популярности где-то и когда-то).
1. Ubuntu и другие Debian based
2. CentOS, Fedora Core и другие RedHat based
3. Chrome OS, CoreOS и другие Gentoo based
4. OpenSUSE / SUSE
5. FreeBSD и другие BSD based
6. Другой
#опрос
Какую ОС стоит посоветовать освоить человеку в первую очередь, желающему в будущем работать с AWS?
С чего начать, чтобы максимально (практически, перспективно, денежно) полезно?
Какое семейство дистрибутивов выбрать? Личный опыт и с учётом на будущее (а не популярности где-то и когда-то).
1. Ubuntu и другие Debian based
2. CentOS, Fedora Core и другие RedHat based
3. Chrome OS, CoreOS и другие Gentoo based
4. OpenSUSE / SUSE
5. FreeBSD и другие BSD based
6. Другой
#опрос
IAM с самоуничтожением
Можно ли сделать такие политики для IAM, чтобы они отработали и уничтожились через некоторое время?
Чтобы совсем уничтожились - придётся наворачивать лямбду. А чтобы просто отработали лишь на какое-то определённое время — запросто.
Для этого нужно использовать Date Condition Operators, например, так:
#IAM #policy
Можно ли сделать такие политики для IAM, чтобы они отработали и уничтожились через некоторое время?
Чтобы совсем уничтожились - придётся наворачивать лямбду. А чтобы просто отработали лишь на какое-то определённое время — запросто.
Для этого нужно использовать Date Condition Operators, например, так:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/my-file",
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2020-01-04T10:00Z"
},
"DateLessThan": {
"aws:CurrentTime": "2020-01-05T18:00Z"
}
}
}
]
}
Т.е. доступ к my-bucket/my-file будет лишь с завтрашнего утра до послезавтрашнего вечера.#IAM #policy
Отличный практикум по Лямбде из командной строки:
https://github.com/nsriram/lambda-the-cli-way
Поэтапное усложнение - от HelloWorld и логов, до интеграции с другими сервисами и SAM (Serverless Application Model). В закладки однозначно.
#Lambda #aws_cli #tutorial
https://github.com/nsriram/lambda-the-cli-way
Поэтапное усложнение - от HelloWorld и логов, до интеграции с другими сервисами и SAM (Serverless Application Model). В закладки однозначно.
#Lambda #aws_cli #tutorial
GitHub
GitHub - nsriram/lambda-the-cli-way: AWS Lambda using CLI, an introductory cookbook
AWS Lambda using CLI, an introductory cookbook. Contribute to nsriram/lambda-the-cli-way development by creating an account on GitHub.
Сколько времени (примерно, обычно) вы тратите на то, чтобы добраться на работу (в одну сторону)?
#опрос
#опрос
Если пересчитать, то в среднем дорога у читателей этого канала занимает 37 минут в одну сторону.
ALB Ingress Controller - обновлённая версия статьи:
https://aws.amazon.com/blogs/opensource/kubernetes-ingress-aws-alb-ingress-controller/
#EKS #kubernetes
https://aws.amazon.com/blogs/opensource/kubernetes-ingress-aws-alb-ingress-controller/
#EKS #kubernetes
Amazon
Kubernetes Ingress with AWS ALB Ingress Controller | Amazon Web Services
Note: This post has been updated in January, 2020, to reflect new best practices in container security since we launched native least-privileges support at the pod level, and the instructions have been updated for the latest controller version. You can also…
Работа с DynamoDB из aws-cli
Примеров работы из aws-cli с DynamoDB кот наплакал, особенно, когда нужны простые вещи, но выходящие за рамки примеров из документации.
create-table
Создадим простенькую таблицу для условного Jenkins, куда будем писать для каждого проекта (
Здесь и дальше предполагается, что настроен
aws dynamodb create-table \
put-item
Запишем в таблицу значение для условного проекта
date +%s
Получение
Сделаем выполнение сразу из строки, а не через отдельный файл для JSON (из-за этого не получится разбить строчку обратным слэшем - поэтому получится длинная):
aws dynamodb put-item --table-name jenkins --item
Переменных добавлено сразу много разных и больше условно, чисто для примера и чтобы удобней выбрать, удалив лишние.
update-item
Обновим билд
aws dynamodb update-item --table-name jenkins --key
...продолжение следует
#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 на 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
Это будут все проекты, можно вывести лишь нужный, например,
aws dynamodb scan --table-name jenkins --query
query
Сделать выборку по проекту
aws dynamodb query --table-name jenkins --max-items 100 --key-condition-expression
Как найти последнее значение билда (не обязательно совпадающее с количеством записей)? Для этого сделаем реверсивную выборку и получим последний элемент, выделив его с помощью #query и сделав таблицу:
aws dynamodb query --table-name jenkins --key-condition-expression
delete-item
Удалим билд
aws dynamodb delete-item --table-name jenkins --key
delete-table
Удалим таблицу .
aws dynamodb delete-table --table-name jenkins
#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://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
GitHub
GitHub - z0ph/aws-security-toolbox: AWS Security Tools (AST) in a simple Docker container. :package:
AWS Security Tools (AST) in a simple Docker container. :package: - z0ph/aws-security-toolbox
Приятно вот так вот, вечерком, в выходные, посидеть за чашечкой чая или кофе, почитать что-нибудь, почесывая тисипи об айпи, как где-то у кого-то на амазоне что-то не работает или глючит.
И чтобы завязка была, а потом всё в огне или детектив, и после обязательно, чтобы всех спасли, она согласилась, а саппорт ответил. Ну, а под занавес ба-бах - бестпрактисы из всех щелей и сплошной хэппи энд.
В общем, приятного чтения:
https://m.signalvnoise.com/aws-s3-youre-out-of-order/
И чтобы завязка была, а потом всё в огне или детектив, и после обязательно, чтобы всех спасли, она согласилась, а саппорт ответил. Ну, а под занавес ба-бах - бестпрактисы из всех щелей и сплошной хэппи энд.
В общем, приятного чтения:
https://m.signalvnoise.com/aws-s3-youre-out-of-order/
Signal v. Noise
AWS S3: You’re out of order.
Back in November, we noticed something odd happening with large uploads to Amazon S3. Uploads would pause for 10 seconds at a time and then resume. It had us baffled. When we started to dig, what w…
Три новых Edge locations для CloudFront открылись недавно поблизости - в Венгрии, Румынии и Болгарии.
Львовщина, Ивано-Франковщина и Одесса радуются - Амазон подобрался совсем близко. Остальные же могут покрутить следующую ссылку, надеясь, что разноцветные отметки переползут когда-то и на их территорию:
https://www.google.com/maps/d/viewer?mid=1cj0vZ2YZJNp39MHIbstZT3QKPkl3Xgw2
#CloudFront
Львовщина, Ивано-Франковщина и Одесса радуются - Амазон подобрался совсем близко. Остальные же могут покрутить следующую ссылку, надеясь, что разноцветные отметки переползут когда-то и на их территорию:
https://www.google.com/maps/d/viewer?mid=1cj0vZ2YZJNp39MHIbstZT3QKPkl3Xgw2
#CloudFront
Отличная утилитка под SSM Session Manager для борьбы с ключами SSH на ваших инстансах (чтобы их не использовать):
https://github.com/xen0l/aws-gate
#SSM
https://github.com/xen0l/aws-gate
#SSM
GitHub
GitHub - xen0l/aws-gate: Better AWS SSM Session manager CLI client
Better AWS SSM Session manager CLI client . Contribute to xen0l/aws-gate development by creating an account on GitHub.