AWS Notes
5.59K subscribers
450 photos
42 videos
10 files
2.81K 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
OpenSearch — open source Elasticsearch+Kibana:

https://aws.amazon.com/blogs/opensource/introducing-opensearch/

OpenSearch is an open source search and analytics engine derived from Elasticsearch 7.10.2, and is currently in an alpha state.
We officially began work on the new fork on January 21st, 2021. Since then, we've been removing non-Apache 2.0 compliant code and doing a full rename of the project.

🔹 Опенсорсный ES:

https://github.com/opensearch-project/OpenSearch

🔹 Опенсорсная Кибана:

https://github.com/opensearch-project/OpenSearch-Dashboards

И вновь продолжается бой...

#OpenSearch
Forwarded from Maksim
В копилку многочасовых обучающих курсов по AWS. https://www.youtube.com/watch?v=keoNi7MmAUY

Сам полностью не смотрел, т.к. мне уже не актуально, но вдруг кому пригодится.
За качество не ручаюсь, но по первым кадрам кажется что на скорости 1.7-2х вполне смотрибельно
​​▪️ 11:44 AM PDT We are investigating increased API error rates in the US-EAST-1 Region.
▪️ 12:17 PM PDT We are working to resolve the issue resulting in increased error rates for the following EC2 APIs in the US-EAST-1 Region: RunInstances, *SecurityGroups, *NetworkInterfaces, *RouteTables, *AccountAttributes, and *NetworkAcls. These APIs will affect the ability to launch new EC2 instances and make mutating changes to Virtual Private Cloud (VPC) network configuration(s). Existing instances and networks continue to work normally. We have identified the root cause and are working towards resolution.
▪️ 12:56 PM PDT We continue to work toward recovery for the issue resulting in increased API error rates for the EC2 APIs in the US-EAST-1 Region. We have identified the root cause and applied mitigations to reduce the impact, while we continue to work towards full mitigation. Some APIs may experience errors or “request limit exceeded” when calling an affected API or using the EC2 Management Console. In many cases, a retry of the request may succeed as some requests are still succeeding. Other AWS services that utilize these affected APIs for their own workflows may also be experiencing impact. These services have posted impact via the Personal Health and/or Service Health Dashboards. We will provide an update in 30 minutes.
▪️ 1:22 PM PDT We continue to work towards full resolution for the issue resulting in increased error rates for the EC2 APIs in the US-EAST-1 Region. We have applied some request throttling for the affected APIs, which has reduced error rates, allowing several APIs to see early recovery. We are adjusting these throttling for some of the affected APIs, which are causing some additional API errors and elevated errors in the EC2 Management Console. We would expect API error rates to continue to recover with the mitigation steps we have taken as we work towards full recovery.

https://status.aws.amazon.com/
Обратите внимание — интересный канал https://t.iss.one/webapparch 👇🏼, где автор много пишет про интервью, вебархитектуру, ML и прочие айтишные вещи, в том числе пересекающиеся с AWS. Рекомендую.
Создание Least Privilege политик для выбранной роли на базе активности в CloudTrail logs теперь в AWS Console:

https://aws.amazon.com/blogs/security/iam-access-analyzer-makes-it-easier-to-implement-least-privilege-permissions-by-generating-iam-policies-based-on-access-activity/

You can now use IAM Access Analyzer to generate fine-grained policies, based on your access activity in your AWS CloudTrail logs. When you request a policy, IAM Access Analyzer gets to work and identifies your activity from CloudTrail logs to generate a policy. The generated policy grants only the required permissions for your workloads and makes it easier for you to implement least privilege permissions.

#IAM #security
IAM аттрибут sts:SourceIdentity для удобного определения пользователей, переключившихся из других ролей:

https://aws.amazon.com/blogs/security/how-to-relate-iam-role-activity-to-corporate-identity/

С помощью установки sts:SourceIdentity легко делать аудит логов CloudTrail, идентифицируя, например, пользователей из Active Directory (AD), посредством добавления какого-то поля из AD, которое будет присутствовать в логах для любой роли любого аккаунта (т.е. в том числе после переключения).

Документация:

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html

#IAM #security
Forwarded from Rinat Uzbekov
Всем привет!
Новый бесплатный курс - Machine Learning Essentials for Business and Technical Decision Makers
Curriculum description
In this three-course curriculum, you will learn about best practices and recommendations for machine learning (ML). The course explores how to roadmap for integrating ML into your business processes, explores requirements to determine if ML is the appropriate solution to a business problem, and describes what components are needed for a successful organizational adoption of ML.
• Course level: Foundational
• Duration: 90 minutes
https://www.aws.training/Details/Curriculum?id=70878
Настройка Amazon Managed Prometheus (AMP) для EKS

Prometheus как сервис появился на AWS в самом конце 2020-го года. На момент написания поста он всё ещё в открытом превью, означающее, что он спокойно доступен в консоли (в отличие от Amazon Managed Grafana, для доступа к которой нужно писать челобитную).

Материалов по AMP не так много. Основные на сейчас это:

Анонс AMP:
🔹 Getting Started with Amazon Managed Service for Prometheus
🎥 AWS re:Invent 2020: Introducing Amazon Managed Service for Prometheus (AMP)

Настройка AMP в cross-acount варианте (когда AMP в другом AWS аккаунте по отношению к окружению, с которого снимаются метрики):
🔹 Setting up cross-account ingestion into Amazon Managed Service for Prometheus

Даже если просто полистать ссылки, то настораживает обилие баша в процессе настройки, что если и поможет, то лишь в повторении демки создания с нуля VPC+EKS сотоварищи, но не особо годится для интеграции в собственные решения.

Документация в сложных моментах содержит те же простыни баша (всё на текущий момент, очень надеюсь, что после это изменится):
🔹 Set up IAM roles for service accounts

Основные моменты AMP + EKS:
▪️ метрики из EKS шлются в AMP (активный режим)
▪️ AMP может быть в то том же или другом аккаунте/регионе
(дополнительные расходы на трафик, если в другом аккаунте/регионе)
▪️ метрики должны быть авторизованы IAM, для чего вместе с Prometheus-сервером водружается sidecar-контейнером IAM-прокси
▪️ для безопасности, чтобы не отправлять метрики через интернет, можно использовать VPC endpoints

Для реализации в EKS потребуется настроить IAM roles for service accounts (если они ещё не были настроены).

⚠️ Отдельно обращу внимание, чтобы во избежание проблем настраивать всё лучше с последними версиями AWS CLI и eksctl.

Главный сложный момент возникает с ролью (в статьях это EKS-AMP-ServiceAccount-Role), в которую переключается сервисный аккаунт для отсылки метрик. У неё весьма сложная структура с хитрыми Conditions. Как раз во многом из-за неё понаписаны простыни баша.

Вместо баша для объяснения особенностей создания этой роли приведу рабочий пример кода на CloudFormation:

AssumeRolePolicyDocument: !Sub
 - |
  {
   "Version": "2012-10-17",
   "Statement": [
    {
     "Effect": "Allow",
     "Principal": {
      "Federated": "arn:aws:iam::${AWS::AccountId}:oidc-provider/oidc.eks.${AWS::Region}.amazonaws.com/id/${Id}"
     },
     "Action": "sts:AssumeRoleWithWebIdentity",
     "Condition": {
      "StringEquals": {
       "oidc.eks.${AWS::Region}.amazonaws.com/id/${Id}:sub": "system:serviceaccount:${NameSpace}:${ServiceAccount}"
      }
     }
    }
   ]
  }
 - Id:       !Ref OidcProviderId
  Namespace:   !Ref KuberNamespace
  ServiceAccount: !Ref ServiceAccountName

👉 Это лишь фрагмент, полный код в репозитории.

Переменные, которые участвуют в создании роли:
Id - EKS Cluster OIDC Provider ID, в данном случае лишь его численная часть (без https и др. элементов)
Namespace - это --namespace, в котором находится Prometheus сервер в EKS кластере
ServiceAccount - имя сервисного аккаунта Prometheus сервера

Стоит обратить внимание, что в yaml-коде выше используется вкрапление json. Это потому, что в Conditions в качестве ключа нужно передать переменную "oidc.eks.${AWS::Region}.amazonaws.com/id/${Id}:sub", что невозможно сделать в yaml.

Вариант выше для случаев, когда роль создаётся "сбоку", когда ей передаётся OIDC ID. Однако это значение ID такое же и для EKS API server endpoint, которое можено получить при создании кластера и тогда создание данной роли можно делать прямо при создании EKS кластера.

- Id: !Select [0, !Split ['.', !Select [1, !Split ['://', !GetAtt eksCluster.Endpoint]]]]

👉 пример фрагмента для EKS репозитории.

От EKS кластера получаем айдишник вида, https://1CF1A05E85DFDB5D489942FCC82AD99E.gr7.eu-west-1.eks.amazonaws.com, которому первым селектом (по "баяну" '://') отсекаем https://, а потом берём всё до первой точки. На выходе получаем то же значение, что и для OpenID!

#AMP
Amazon Managed Grafana (AMG) доступна в консоли:

https://aws.amazon.com/blogs/mt/amazon-managed-service-for-grafana-amg-preview-updated-with-new-capabilities/

Новые фичи AMG:

• доступен апгрейд до Enterprise версии
• Grafana version 7.5
• поддержка Open Distro for Elasticsearch

p.s. И ведь только вчера пожаловался, что нужно писать запрос и ждать, пока включат доступ к Preview. 😀 Очень хорошо, не нужно ничего писать — можно сразу пользоваться.

#AMG
Forwarded from Sysadmin Tools 🇺🇦
AWS multi-account CI/CD with Gitlab runners

#aws #gitlab #terraform
Чтобы указать последнюю версию SSM Parameter в CloudFormation шаблоне — просто не указываем поле version:

version
If you do not specify the exact version, CloudFormation uses the latest version of the parameter whenever you create or update the stack.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-ssm-pattern

#SSM #CloudFormation
Forwarded from DevOps&SRE Library
Balancing act: the current limits of AWS network load balancers

https://ably.com/blog/limits-aws-network-load-balancers
Forwarded from Rinat Uzbekov
Бесплатный курс на русском!!!

AWS Cloud Practitioner Essentials Day
вторник, 11 мая | 9am MSK (GMT+3)

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

Зарегистрироваться - https://pages.awscloud.com/EMEA-event-OE-CPE-May-11-2021-reg-event-RU.html?sc_channel=em&sc_campaign=Traincert_AlwaysOn_2021&sc_publisher=aws&sc_medium=em_AlwaysOnWebinars&sc_content=event_ev_field&sc_country=RUCIS&sc_geo=EMEA&sc_outcome=event&trkCampaign=EMEA-FY21-TrainCert-AlwaysOnWebinar_RU
Forwarded from Rinat Uzbekov
Ваш первый проект будет легче запустить с бонусом в $300 долларов

Бесплатная программа AWS Proof of Concept предназначена для того, чтобы помочь вам воплотить ваши идеи в реальность, создав их пробные версии на платформе AWS.

Эксклюзивное предложение для предприятий малого и среднего бизнеса: наша программа поможет вам быстро начать работу на AWS, а также позволит воспользоваться рядом других преимуществ, включая бонусные суммы* от AWS в размере $300 долларов, доступ к бесплатным инструментам, ресурсам и многое другое.

Познакомьтесь с платформой AWS без каких-либо рисков и узнайте, как она может помочь вам решить ваши задачи в сфере бизнеса и ИТ.

Миллионы малых и средних предприятий уже используют облачные решения AWS для преображения своего бизнеса, привлечения новых клиентов, снижения операционных расходов и расширения своей деятельности. Поэтому подайте заявку на получение бонуса и подтвердите жизнеспособность своей идеи уже сегодня – мы уделим вам все внимание!
https://pages.awscloud.com/GLOBAL-acq-GC-New_Proof_of_Concept_UKIR-2021-reg.html?Languages=Russian
Прокидываем AWS Secrets в поды с помощью ASCP (AWS Secrets & Configuration Provider):

https://aws.amazon.com/blogs/security/how-to-use-aws-secrets-configuration-provider-with-kubernetes-secrets-store-csi-driver/

С помощью ASCP можно примонтировать AWS Secrets в под:

kind: Pod
apiVersion: v1
metadata:
name: nginx-secrets-store-inline
spec:
serviceAccountName: aws-node
containers:
- image: nginx
name: nginx
volumeMounts:
- name: MySecret2
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: MySecret2
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "aws-secrets"

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

AWS Secrets можно синхронизировать с куберовскими секретами, на текущий момент поддерживаются следующие типы:

opaque
kubernetes.io/basic-auth
bootstrap.kubernetes.io/token
kubernetes.io/dockerconfigjson
kubernetes.io/dockercfg
kubernetes.io/ssh-auth
kubernetes.io/service-account-token
kubernetes.io/tls

#Secrets #EKS
Graviton 2 — переходим на светлую сторону, часть 1

Процессоры ARM уже не первый год на AWS, а теперь ещё и в Макбуках (которые тоже на AWS :) ). Многие наверняка слышали про них, но, как это часто бывает, придерживаются фразы "Ну, вот, скажи мне — где я, а где ARM?!?"

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

Далее мой личный опыт и впечатления от работы c6g/m6g/t4g в, так сказать, "повседневной жизни" условного девопса или админа. Спойлер — овчинка стоит.

Возьмём популярный вариант — у вас что-то крутится в docker-compose, например, Node.js, Mongo или какой-нибудь Jenkins. Или даже возьмём всё вместе. Итак, что нужно будет сделать, чтобы пощупать гравитончик?

К примеру, у вас использовалась популярная виртуалка t3.medium. Значит для теста поднимаем t4g.medium - условный аналог на ARM.

Запустили, заходим, ставим докер привычным способом, например, для Amazon Linux 2:

yes | sudo amazon-linux-extras install docker

Docker поставили, пока никаких отличий.

Будем ставить docker-compose, гуглим и узнаём про первый облом ARM — а вот и нет такого:

https://github.com/docker/compose/issues/6831

Заходим, ставим лайк, чтобы таки когда-нибудь получить официальную версию. Но, понятно, проблема насущная и кто-то наверняка её решил. Всё верно, можно использовать докер для докера!

sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

И получаем неофициальную, но вполне рабочую версию docker-compose под ARM.

Дальше проходимся по сервисам, которые у вас поднимаются в docker-compose. Если это что-то известное/популярное, например, упомянутые Node.js или Монга, то проблем, скорей всего, не будет – вообще ничего менять не придётся, т.к. у них вместе выложены докеры сразу под несколько платформ, в том числе под arm64. Оговорочку можно сделать лишь если у вас шибко старые версии, т.к. поддержка ARM появилась относительно недавно. Например, для Mongo версий 3.5 и древней поддержки ARM не будет, зато 3.6+ работает на ARM отлично.

Для не столь крупных проектов может не быть arm64 версий. Например, дефолтный репозиторий для Jenkins имеет образы лишь под amd64. Конечно, всегда можно пойти и собрать образ под arm64 самому, скачав исходники с GitHub. Это справедливо и для большого количества других open source проектов. Но погуглив часто можно найти готовое, в случае Jenkins это будет jenkins4eval/jenkins.

Для наглядности поставим популярные вещи под ARM — kubectl, eksctl, helm, kustomize:

curl -o https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/arm64/kubectl

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_arm64.tar.gz" | tar xz

curl --silent --location https://get.helm.sh/helm-v3.5.4-linux-arm64.tar.gz | tar xz linux-arm64/helm

curl --silent --location https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v4.1.2/kustomize_v4.1.2_linux_arm64.tar.gz | tar xz

Если под ваш какой-то проект нет ARM-варианта — что ж, значит придётся обождать. Однако часто выясняется, что от чего-то можно безболезненно избавиться и всё же попробовать.

Отдельно скажу, что у вышеупомянутой неофициальной версии docker-compose под ARM есть некоторые проблемы — например, у меня с ней не заработал нормально jwilder/docker-gen для получения LetsEncrypt-овских сертификатов. Я не пробовал другие, используя сертификаты на ALB, однако возможность таких вещей стоит учесть. Но, всё же, в большинстве случаев (и точно, если это что-то популярное) никаких принципиальных моментов не возникает.

#ARM #Graviton