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

Chat: https://xn--r1a.website/aws_notes_chat

Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/
Download Telegram
Кто выбирает "Другой", будьте добры, напишите какой другой — либо в чат, либо Facebook. А то неизвестный Другой в тройке лидеров.
Уважаемые коллеги. Кто не знаком, позвольте представить заслуженного мастера спорта международного класса по IAM и другим видам амазоноборства, спикера крупнейших конференций и при этом надёжного информатора о том, что происходит у них там в Европах, Карена Товмасяна.

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

https://xn--r1a.website/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.
AWS и доброта в (бесконечном) цикле

Такие вещи случаются:

https://twitter.com/__steele/status/1218453873834086401

Как-то писал про это в "AWS и доброта", по ссылке из твиттера можно прочитать десятки таких реальных случаях на тысячи долларов в том числе.

===

Несколько выводов оттуда.

• Настоятельно рекомендуется включить и настроить биллинг-алерты:

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html

Не забывайте удалять ненужные/тестовые ресурсы. (Да, Капитан!)

• Не бойтесь писать в техподдержку, даже, если вы были не правы и эта полностью ваша вина. Например, сами выложили ключ в паблик и враги намайнили ресурсов, неправильно поняли стоимостную модель или просто неочевидно накликали в конслоли (и даже много раз подряд). Всё распишите и объясните. Шансы, что спишут полностью или хотя бы часть (50-75%) очень велики.

===

Популярные скрытые угрозы незаметных расходов.

NAT GW из примера - вы думаете, что у вас чистый аккаунт и нет виртуалок и прочих сервисов, а забываете, что он стоит денег (33$ в месяц и больше). И если вы "поигрались" с Control Tower либо Langing Zones, где насоздавали кучу "пустых" (как вы думали) аккаунтов - нужно помнить про засаду с NAT GW.

AWS Rekognition - запросто можно распознать в цикле миллионы чего-нибудь ненужного или одного и того же.

Route 53 Resolver endpoints - 90$ в месяц за каждый ENI.

ACM Private CA - 400$ в месяц.

А также эти и другие в составе различных тестовых CloudFormation шаблонов, которые вы развернули и забыли удалить.

Будьте внимательны, тренируйте память, бегайте по утрам и настраивайте алерты!

#cost_optimization
Больше для новичков в AWS, но из той же годной серии - качественные 4 часа курса для подготовки к Cloud Practitioner:

https://www.youtube.com/watch?v=3hLmDS179YE

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

Повышайте эффективность своих подчинённых, уменьшая коэффициент велосипедостроительства.

#AWS_Certification
Отдельные граждане тут просили не путать сервис Control Tower и Solution Landing Zone. Посмотрим, что они теперь скажут на это:

https://aws.amazon.com/solutions/customizations-for-aws-control-tower/

Краткое содержание предыдущих серий. Для помощи в реализации Multi Account Strategy Амазон выпустил в 2018-ом Solution (не путать с сервисом) AWS Landing Zone, а 2019-ом полноценный сервис (а не какое-то там решение) AWS Control Tower.

И вот теперь, чтобы жизнь мёдом не казалась, и чтобы было больше ошибок на экзаменах по сертификации, они выпустили Solution для улучшения сервиса Control Tower.

Поставить такое решение можно лишь тем, кто развернул свою организацию с помощью сервиса Control Tower. Остальные (в том числе я) ждём, пока Control Tower научится работать с существующими организациями. И выход данного решения показывает, что прогнозы на получение такого функционала летом весьма реальны.

#Control_Tower
Продолжая серию видео, чтобы разбить многочасовые оперы по курсам, есть отличный набор коротких (5-10 минут) видео-роликов по архитектуре на амазоне:

https://aws.amazon.com/this-is-my-architecture/

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

#design #video
Отличный источник примеров работы с #CloudFormation #templates (а также #Terraform и #aws_cli) плюс прямые ссылки на документацию, официальные блоги, всяческие безопасности и различные #best_practices:

https://asecure.cloud/

Однозначно в закладки.

#security #info
Появился экспорт #RDS снэпшотов на S3:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ExportSnapshot.html

Аналогично для #Aurora:

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_ExportSnapshot.html

Можно экспортировать не весь снэпшот, а лишь часть, сохраняется в parquet-формате.
​​Туториал использования SRR (Same-Region Replication) для сбора логов из разных аккаунтов в один бакет:

https://aws.amazon.com/blogs/storage/aggregating-logs-with-s3-same-region-replication/

Подход применим не только для логов, но и, к примеру, для автоматической синхронизации свежедобавленной информации для dev-бакета в какой-то test-бакет, расположенный в другом аккаунте (того же региона). Кроме того реплицировать можно не весь бакет, а лишь нужную папку.

#SRR
AWS Organization Formation = CloudFormation для Organizations

https://github.com/OlafConijn/AwsOrganizationFormation

Утилита реализует IaC (Infrastructure as Code) подход в рамках AWS Organizations, когда описывать аккаунты организации и их характеристики можно (нужно) через привычные по шаблонам CloudFormation yaml-файлы (пример).

Хороший подход для описания новых организаций, а для имеющихся - хороший повод подсмотреть и реализовать сходные идеи у себя.

#Organizations
​​Чтобы расшарить ECR репозиторий (только на чтение - лишь скачать) для всей организации (нужно заменить на свой aws:PrincipalOrgID):

{
 "Version": "2008-10-17",
 "Statement": [
  {
   "Sid": "Organization ReadOnly access",
   "Effect": "Allow",
   "Principal": "*",
   "Action": [
    "ecr:BatchCheckLayerAvailability",
    "ecr:BatchGetImage",
    "ecr:GetDownloadUrlForLayer"
   ],
   "Condition": {
    "StringEquals": {
     "aws:PrincipalOrgID": "o-gs1bsr375"
    }
   }
  }
 ]
}

Данные правила (download only) применяются для других аккаунтов, а для аккаунта, где расположен ECR - регулируется с помощью IAM, которыми можно поставить нужные права (в том числе на upload).

#ECR
SCP для запрета запуска мощных виртуалок

{
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": "arn:aws:ec2:*:*:instance/*",
  "Condition": {
    "StringNotLike": {
      "ec2:InstanceType": [
        "*.nano",
        "*.micro",
        "*.small",
        "*.medium"
      ]
    }
  }
}

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

#Organizations #SCP #policy
Загадка по IAM

Имеем policy из примера выше про расшаривание ECR репозитория для других аккаунтов.

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

Есть инстанс (в этом же аккаунте, где ECR), к которому нужно прикрепить роль с минимальными правами, чтобы спулить образ из расшаренного приведенным способом ECR-репозитория.

Имеются следующие варианты:

1.
{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Effect": "Allow",
     "Resource": "*",
     "Action": [
       "ecr:GetAuthorizationToken"
     ]
   }
 ]
}

2. то же, что 1 плюс GetDownloadUrlForLayer:
{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Effect": "Allow",
     "Resource": "*",
     "Action": [
       "ecr:GetAuthorizationToken",
"ecr:GetDownloadUrlForLayer"
     ]
   }
 ]
}

3. то же, что 2 плюс еще на Batch:
{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Effect": "Allow",
     "Resource": "*",
     "Action": [
       "ecr:GetAuthorizationToken",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage"
     ]
   }
 ]
}

Какой роли минимально достаточно?

#загадка #IAM
Какая минимальная роль нужна, чтобы спулить образ из расшаренного ECR репозитория в том же аккаунте?
Anonymous Quiz
26%
1. GetAuthorizationToken
28%
2. ... + GetDownloadUrlForLayer
47%
3. ... + BatchCheckLayerAvailability + BatchGetImage
Загадка по IAM с одной стороны примитивно простая, а с другой ненормально сложная. Из разряда тех, которыми можно ставить в ступор даже знающих AWS профессионалов. Хороший пример, как и откуда потом берутся утечки информации.

Правильный ответ 1 - по сути, никаких прав IAM роли не нужно (чисто лишь залогиниться на докере GetAuthorizationToken). Кто не верит, может попробовать и убедиться.

Проблема тут на уровне IAM, точней отношения к нему, как к главному способу выделения доступа. Ведь так учат в документации — IAM предназначен для управления доступом, а что не разрешно, то запрещено.

И правильно учат. Только, как говорится, есть нюансы. И нюанс в том, что управление доступом это не только IAM, но Resource-based политики (JSON, прикреплённый в данном случае к ECR-репозиторию)

В случае мульти-аккаунт схемы для внешних аккаунтов происходит проверка IAM прав юзера (другого аккаунта) и Resource-based policy по очереди. Нет прав IAM - до свидания. Не важно, что там написано в Resource-based policy ресурса.

В случае же одного и того же аккаунта, IAM и Resource-based policy разрешаются одновременно. Т.е. складываем и смотрим. IAM не разрешает (но и не запрещает), а Resource-based policy - разрешает, итого - разрешено!

Кому интересны подробности, то на примере S3 Bucket policy и с разбором исторического подтекста - можно почитать здесь.

#отгадка #IAM