Amazon S3

Интеграция Adapty с Amazon S3 позволяет хранить данные о событиях и посещениях пейволов в одном централизованном месте. Вы сможете сохранять события подписок в виде .csv-файлов в вашем бакете Amazon S3.
Для настройки интеграции потребуется выполнить несколько простых шагов в AWS Console и дашборде Adapty.

Расписание

Adapty отправляет данные каждые 24 часа в 4:00 UTC.

Каждый файл содержит данные о событиях за весь предыдущий календарный день по UTC. Например, данные, экспортированные автоматически в 4:00 UTC 8 марта, будут содержать все события, созданные 7 марта с 00:00:00 до 23:59:59 по UTC.

Как настроить интеграцию с Amazon S3

Для получения данных вам понадобятся следующие учётные данные:

  1. Access key ID
  2. Secret access key
  3. S3 bucket name
  4. Folder name inside the S3 bucket

Вложенные директории

В поле имени бакета Amazon S3 можно указывать вложенные директории, например: adapty-events/com.sample-app

Чтобы подключить Amazon S3, перейдите в Integrations -> Amazon S3, включите переключатель и заполните поля.

Сначала укажите учётные данные для установки соединения между Amazon S3 и профилями Adapty. В дашборде Adapty для настройки подключения нужны следующие поля:

ПолеОписание
Access Key IDУникальный идентификатор для аутентификации пользователя или приложения при доступе к сервису AWS. Найдите этот идентификатор в загруженном csv-файле.
Secret Access KeyПриватный ключ, используемый совместно с Access Key ID для аутентификации при доступе к сервису AWS. Найдите этот ключ в загруженном csv-файле.
S3 Bucket NameГлобально уникальное имя, идентифицирующее конкретный S3-бакет в облаке AWS. S3-бакеты — это простой сервис хранения, позволяющий хранить и получать объекты данных (файлы, изображения и т. д.) в облаке.
Folder Inside the BuckerНазвание папки, которую вы хотите создать внутри выбранного S3-бакета. Обратите внимание: S3 имитирует папки с помощью префиксов ключей объектов, которые по сути и являются именами папок.

Как создать учётные данные Amazon S3

Этот гайд поможет вам создать необходимые учётные данные в консоли AWS.

1. Создайте политику доступа

Сначала перейдите на страницу управления политиками IAM в консоли AWS и выберите Create Policy.

7af075c-CleanShot_2023-03-21_at_10.52.002x.webp

В редакторе политики вставьте следующий JSON и замените adapty-s3-integration-test на название вашего бакета:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::adapty-s3-integration-test"
        },
        {
            "Sid": "AllowAllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::adapty-s3-integration-test/*",
                "arn:aws:s3:::adapty-s3-integration-test"
            ]
        },
        {
            "Sid": "AllowBucketLocation",
            "Effect": "Allow",
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::adapty-s3-integration-test"
        }
    ]
}
d4e474a-CleanShot_2023-03-21_at_10.56.212x.webp

После завершения настройки политики вы можете добавить теги (необязательно), а затем нажать Next, чтобы перейти к последнему шагу. На этом шаге нужно указать название политики и нажать кнопку Create policy, чтобы завершить создание.

7dcb02f-CleanShot_2023-03-21_at_11.03.372x.webp

2. Создайте пользователя IAM

Чтобы Adapty мог загружать отчёты с сырыми данными в ваш бакет, необходимо предоставить Access Key ID и Secret Access Key пользователя с правом записи в этот бакет.

Для этого перейдите в IAM Console и откройте раздел Users. Затем нажмите кнопку Add users. Дайте пользователю имя, выберите Access key – Programmatic access и перейдите к настройке прав доступа.

467ee4d-j6aoX.webp

На следующем шаге выберите опцию Add user to group, затем нажмите кнопку Create group.

bfd0e80-CleanShot_2023-03-21_at_11.24.592x.webp

Далее укажите имя для вашей группы пользователей и выберите политику, созданную ранее. После выбора политики нажмите кнопку Create group, чтобы завершить процесс.

df29c12-CleanShot_2023-03-21_at_11.28.052x.webp

После успешного создания группы выберите её и перейдите к следующему шагу.

1f3722e-CleanShot_2023-03-21_at_11.36.192x.webp

Это последний шаг данного раздела — просто нажмите кнопку Create User. Наконец, вы можете скачать учётные данные в формате .csv или скопировать и вставить их прямо с дашборда.

bcf35e1-S3created.webp

Экспорт данных вручную

Помимо автоматического экспорта событий в Amazon S3, Adapty также поддерживает ручной экспорт файлов. С помощью этой функции вы можете выбрать конкретный временной интервал и экспортировать данные о событиях в свой S3-бакет вручную. Это даёт вам больше контроля над тем, какие данные и когда экспортировать.

Указанный диапазон дат используется для экспорта событий, созданных с Date A 00:00:00 UTC по Date B 23:59:59 UTC.

466bd29-CleanShot_2023-03-21_at_12.35.252x.webp

Структура таблицы

В интеграции с AWS S3 Adapty предоставляет таблицу для хранения исторических данных о транзакционных событиях и посещениях пейвола. Таблица содержит информацию о профиле пользователя, выручке и чистом доходе, источнике стора и других параметрах. По сути, эти таблицы фиксируют все транзакции, сгенерированные приложением за определённый период времени.

Обратите внимание, что эта структура может расширяться со временем — по мере добавления новых данных нами или сторонними сервисами, с которыми мы работаем. Убедитесь, что ваш код, обрабатывающий эти данные, достаточно устойчив и опирается на конкретные поля, а не на структуру целиком.

Ниже приведена структура таблицы для событий:

СтолбецОписание
profile_idID пользователя Adapty.
event_typeНазвание события в нижнем регистре. Типы событий описаны в разделе События.
event_datetimeДата в формате ISO 8601.
transaction_idУникальный идентификатор транзакции — покупки или продления.
original_transaction_idИдентификатор транзакции первоначальной покупки.
subscription_expires_atДата истечения подписки. Как правило, в будущем.
environmentSandbox или Production.
revenue_usdВыручка в USD. Может быть пустым.
proceeds_usdПоступления в USD. Может быть пустым.
net_revenue_usdЧистая выручка (доход после уплаты налогов) в USD. Может быть пустым.
tax_amount_usdСумма налоговых отчислений в USD. Может быть пустым.
revenue_localВыручка в местной валюте. Может быть пустым.
proceeds_localПоступления в местной валюте. Может быть пустым.
net_revenue_localЧистая выручка (доход после уплаты налогов) в местной валюте. Может быть пустым.
tax_amount_localСумма налоговых отчислений в местной валюте. Может быть пустым.
customer_user_idID пользователя на стороне разработчика. Например, UUID, email или любой другой идентификатор. Null, если не задан.
storeМожет быть app_store или play_store.
product_idID продукта в Apple App Store, Google Play Store или Stripe.
base_plan_idID базового плана в Google Play Store или ID цены в Stripe.
developer_idID пейвола (SDK) разработчика, с которого была совершена транзакция.
ab_test_nameНазвание A/B-теста, в рамках которого была совершена транзакция.
ab_test_revisionРевизия A/B-теста, в рамках которого была совершена транзакция.
paywall_nameНазвание пейвола, с которого была совершена транзакция.
paywall_revisionРевизия пейвола, с которого была совершена транзакция.
profile_countyСтрана профиля, определённая Adapty по IP-адресу.
install_dateДата установки в формате ISO 8601.
idfvidentifierForVendor на устройствах iOS.
idfaadvertisingIdentifier на устройствах iOS.
advertising_idAdvertising ID — уникальный код, присваиваемый операционной системой Android, который рекламодатели могут использовать для идентификации устройства пользователя.
ip_addressIP-адрес устройства (IPv4 или IPv6; при наличии предпочтение отдаётся IPv4). Обновляется при каждой смене IP-адреса устройства.
cancellation_reason

Причина отмены подписки пользователем.

Возможные значения:

iOS & Android voluntarily_cancelled, billing_error, refund

iOS price_increase, product_was_not_available, unknown, upgraded

Android new_subscription_replace, cancelled_by_developer

android_app_set_idAppSetId — уникальный, сбрасываемый пользователем идентификатор на уровне устройства и аккаунта разработчика для рекламных сценариев без монетизации.
android_idНа Android 8.0 (API level 26) и выше — 64-битное число (в шестнадцатеричном формате), уникальное для каждой комбинации ключа подписи приложения, пользователя и устройства. Подробнее см. документацию для разработчиков Android.
deviceНазвание модели устройства, отображаемое конечному пользователю.
currencyТрёхбуквенный код валюты транзакции (ISO-4217).
store_countryСтрана профиля, определённая Apple/Google store.
attribution_sourceИсточник атрибуции.
attribution_network_user_idID пользователя, присвоенный источником атрибуции.
attribution_statusМожет быть organic, non_organic или unknown.
attribution_channelНазвание маркетингового канала.
attribution_campaignНазвание маркетинговой кампании.
attribution_ad_groupГруппа объявлений атрибуции.
attribution_ad_setНабор объявлений атрибуции.
attribution_creativeКлючевое слово креатива атрибуции.
attributesJSON с пользовательскими атрибутами. Включает все пользовательские атрибуты, настроенные для отправки из мобильного приложения. Чтобы их отправлять, включите опцию Send User Attributes на странице Integrations -> Webhooks.
integration_idsВсе интеграционные ID, связанные с профилем. Словарь. Пример: {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’}
Here is the table structure for the paywall visits:
СтолбецОписание
:--------------------:--------------------------------------------------------------------------------------------------------------------
profile_idИдентификатор пользователя Adapty.
customer_user_idИдентификатор пользователя, заданный разработчиком. Например, это может быть UUID, email или любой другой ID. Null, если не задан.
profile_countryСтрана профиля, определённая стором Apple/Google.
install_dateДата установки в формате ISO 8601.
storeМожет быть app_store или play_store.
paywall_showed_atДата, когда пейвол был показан пользователю.
developer_idDeveloper (SDK) ID пейвола, из которого совершена транзакция.
ab_test_nameНазвание A/B-теста, из которого совершена транзакция.
ab_test_revisionРевизия A/B-теста, из которого совершена транзакция.
paywall_nameНазвание пейвола, из которого совершена транзакция.
paywall_revisionРевизия пейвола, из которого совершена транзакция.

События и теги

Вы можете управлять тем, какие данные передаются в рамках интеграции. Доступны следующие параметры настройки:

НастройкаОписание
Exclude Historical EventsИсключить события, произошедшие до установки приложения с Adapty SDK. Это предотвращает дублирование событий и обеспечивает точность отчётов. Например, если пользователь активировал ежемесячную подписку 10 января, а обновил приложение с Adapty SDK 6 марта, Adapty пропустит события до 6 марта и сохранит последующие.
Include events without profileВключить транзакции, не связанные с профилем пользователя в Adapty. Сюда могут входить покупки, совершённые до установки Adapty SDK, или транзакции, полученные из серверных уведомлений стора, которые невозможно сразу сопоставить с конкретным пользователем.
Send User AttributesЕсли вы хотите передавать атрибуты пользователей, например языковые настройки, и ваш тарифный план OneSignal поддерживает более 10 тегов, выберите эту опцию. При включении можно передавать дополнительную информацию сверх стандартных 10 тегов. Учтите, что превышение лимита тегов может приводить к ошибкам.
s3-settings.webp

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

fd5ccb9-CleanShot_2023-08-17_at_14.49.282x.webp