Привет читатели!
Есть большие проекты с отдельными аккаунтами и множеством IAM пользователями. Но чаще встречаются более мелкие клиенты, и тут хотелось бы собрать всех вместе, но биллить их отдельно. Как же это сделать? Как выставлять счёт разным клиентам под одним аккаунтом AWS? Я сейчас об этом и расскажу.
Тегирование
Для разделения ресурсов и многопользовательского биллинга в AWS используются теги. Тегирование можно приладить ко всему, что угодно. Разного рода трафик, операции ввода-вывода, RDS, SQS, S3 и т.д. можно считать отдельно по тегами. Итак, возьмём главным тег PROJECT и применим его ко всем серивсам, например:
S3 Bucket
Отчёты от Amazon будут приходить в отдельный S3 бакет, который нужно создать и подготовить. Создаём бакет и приставляем к нему следующий Bucket Policy:
{ "Version": "2008-10-17", "Id": "Policy1335892530063", "Statement": [ { "Sid": "Stmt1335892150622", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::386209384616:root" }, "Action": [ "s3:GetBucketAcl", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::epm-cit_fin_reports" }, { "Sid": "Stmt1335892526596", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::386209384616:root" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::epm-cit_fin_reports/*" } ] }
Эта политика даёт сервису биллинга AWS доступ к вашему бакету, чтоб складывать в него отчёты.
Billing Preferences
Далее идём на страницу Billing Preferences и включаем все сервисы, указав нужный бакет с уже установленной политикой:
Cost Allocation Report
Перейдя на страницу настроек отчёта, мы выберем теги, по которым мы будем выставлять счёт нашим клиентам:
Отчёты
Итак, со временем в выбранном бакете появятся файлы отчётов в формате CSV. В них будут присутствовать все айтемы, за которые AWS снимает деньги с карты. Те айтемы, которые исходят от сервисов, которые были тегированы, будут помечены. В Excel/OO Calc можно отфильтровать строки по тегам и вывести сумму, которую накрутил отдельный клиент на вашем аккаунте.
Можно сделать что-то такое, чтоб красиво оформлять отчёты:
Выводы
В этом небольшом рассказе я дал основные моменты многопользовательского биллинга в AWS. Так легко и просто разделить сервисы между разными пользователями и выставлять им оправданные счета. К сожалению, сейчас нельзя разграничить права доступа между клиентами, чтобы они сами менеджили свои ресурсы под одним аккаунтом, но я думаю, когда-нибудь это станет возможно и обязательно напишу на Хабре как это сделать!
Автор: korjik