De un vistazo: Data Locker envía los datos de tus reportes al almacenamiento en la nube para cargarlos en tus sistemas de Business Intelligence. Puedes seleccionar entre diferentes destinos de almacenamiento: un bucket propiedad de AppsFlyer en AWS o un almacenamiento de tu propiedad en AWS, GCS, Yandex, BigQuery y Snowflake. Data Locker admite varios destinos. Esto significa que puedes enviar todos los datos a varios destinos, separar los datos por destino o una combinación de ambos.
Data Locker
En Data Locker, selecciona tus aplicaciones, fuentes de medios, eventos y reportes para incluirlos en los datos que AppsFlyer entrega a tus opciones de almacenamiento en la nube seleccionadas. A continuación, carga los datos programáticamente desde el almacenamiento a tus sistemas.
Data Locker: funciones
Característica | Descripción |
---|---|
Opciones de almacenamiento (nube) |
Data Locker puede enviar tus datos a cualquiera de los siguientes proveedores de servicios en la nube:
Puedes establecer más de un destino en Data Locker. Esto significa que puedes enviar todos o algunos de tus datos a múltiples destinos. Ejemplos
|
Aplicaciones múltiples |
Envía datos de 1, más o todas las aplicaciones de tu cuenta. Cuando agregas aplicaciones a la cuenta, se pueden incluir automáticamente. |
Ventana de disponibilidad |
14 días |
Segregación de datos |
Opciones de segregación de datos disponibles (relevantes para el almacenamiento en un bucket en la nube):
|
Opciones de formato de datos |
|
Actualización de los datos |
La actualización depende del tipo de reporte
|
Reportes disponibles en Data Locker
Arquitectura de almacenamiento de datos
Información general
La estructura de tus datos en el almacenamiento depende de si los datos se envían al almacenamiento en la nube o a un almacén de datos. La estructura de carpetas descrita aquí se aplica al almacenamiento (buckets). En el caso del almacenamiento en almacén de datos, ten en cuenta que la referencia a las carpetas se aplica a las vistas. Consulta Snowflake.
Los datos se escriben en la opción de almacenamiento seleccionada. En el caso del almacenamiento en la nube, el almacenamiento es propiedad de AppsFlyer en AWS o de tu propiedad en AWS, GCS o Yandex. Puedes cambiar de opción de almacenamiento en cualquier momento o enviar algunos o todos tus datos a varias opciones de almacenamiento.
Los datos del almacenamiento en el bucket en la nube están organizados en una estructura jerárquica de carpetas, según el tipo de reporte, la fecha y la hora. La siguiente figura contiene un ejemplo7 de esta estructura:
Los datos de un reporte determinado están incluidos en las carpetas de horas (h) asociadas con ese reporte:
- La cantidad de carpetas de horas depende de la actualización de los datos del reporte (por hora, por día o versionado).
- Los datos se proporcionan en archivos comprimidos Snappy o GZIP, o en archivos sin comprimir, que tienen formato Parquet o CSV.
- Los archivos de datos constan de columnas (campos).
- La estructura del esquema (campo) de los reportes de la trayectoria del usuario es idéntica y depende de los campos seleccionados por ti. Otros reportes tienen cada uno sus propios campos explícitos, también conocidos como reportes sin esquema. Consulta Reportes para marketers de Data Locker para ver los reportes disponibles y los enlaces a las especificaciones del reporte.
Estructura de carpetas
Carpeta | Descripción |
---|---|
ID de suscripción |
Ejemplos de estructura de carpetas en función del propietario del bucket y el proveedor de la nube
|
Tema (t) | El tipo de reporte se relaciona con el asunto del reporte. |
Fecha (dt) |
Esta es la fecha de los datos relacionados. En el caso de raw data, significa la fecha en que ocurrió el evento. En el caso de los datos agregados, la fecha del reporte en sí. |
Hora (h o versión) |
Las carpetas de fecha se dividen en carpetas por hora (h) o por versión según el tipo de reporte. Carpetas por horaLas carpetas h se relacionan con la hora en que AppsFlyer recibió los datos. Por ejemplo, los eventos de instalación recibidos entre las 14:00 y 15:00 UTC se escriben en el archivo h=14. Nota: Hay una demora, de aproximadamente 1 a 3 horas, entre el momento en que los datos llegan a AppsFlyer hasta que la carpeta h se escribe en Data Locker. Por ejemplo, la carpeta h=14 se escribe 1 hora después a las 15:00 UTC. Características de las carpetas por hora:
Carpetas de versiónAlgunos reportes tienen una opción versionada. Esto significa que los datos más actualizados para un día determinado se proporcionan varias veces. Dado que los datos pueden seguir actualizándose debido a datos con llegada tardía o a datos más precisos, el mismo reporte tiene varias versiones en las que la versión más reciente es la más precisa. Los reportes de un día determinado se encuentran en la carpeta de versiones de ese día. Cada versión está contenida en una carpeta separada cuyo nombre se establece mediante una marca de tiempo Epoch que identifica el reporte de forma exclusiva. Tus procesos de importación de datos deben considerar que los datos pueden ser escritos retroactivamente. Por ejemplo, el 14 de enero, los datos se pueden escribir en la carpeta 1 de enero. Si el bucket es de tu propiedad, considera utilizar la notificación de servicio en la nube para activar tu proceso de importación (AWS | GCS) |
Segregación de aplicaciones
Tipo de segregación | Descripción |
---|---|
[Predeterminada] Unificada |
Los datos de todas las aplicaciones se proporcionan en archivos de datos unificados. Al procesar los datos, utiliza el campo app_id a nivel fila para distinguir entre aplicaciones. Ejemplos de archivos de datos que están en la carpeta h=2 La convención de nomenclatura de archivos de datos es unique_id.gz.
|
Segregado por aplicación |
La carpeta contiene subcarpetas por aplicación. Los archivos de datos de una aplicación determinada se encuentran dentro de la carpeta de la aplicación. En la siguiente figura, la carpeta h=19 contiene carpetas de aplicaciones. Cada carpeta de aplicación contiene los archivos de datos asociados. Nota: Los archivos de datos no contienen el app_id, debes determinar el app_id mediante la carpeta. En cada carpeta de la aplicación, la convención de nomenclatura es unique_id.gz:
Limitación: esta opción no está disponible para los reportes de la atribución basada en las personas. |
Archivos de datos
Los archivos de datos dependen del tipo de segregación.
Contenido | Detalles | |
---|---|---|
Indicador de finalización |
El indicador de último archivo (finalización) se establece cuando se han escrito todos los datos de una carpeta h determinada.
|
|
Tipos de archivo |
|
|
Secuencia de columnas (archivos CSV) |
En el caso de los archivos CSV, la secuencia de campos en los reportes es siempre la misma. Cuando agregamos campos nuevos, estos se agregan a la derecha de los campos existentes. En este sentido:
|
|
Consideraciones del relleno de campos |
Campos en blanco o vacíos: algunos campos se rellenan con null o están vacíos. Esto significa que en el contexto de un reporte determinado no hay datos para reportar. Normalmente, null (nulo) significa que este campo no se completa en el contexto de un reporte y tipo de aplicación determinados. Blank "" (en blanco) significa que el campo es relevante en su contexto, pero no se encontraron datos para completarlo. Si la fuente de medios está restringida, el contenido de los campos restringidos se establece en nulo. En general, se considera nulo y en blanco como un único producto; no hay datos disponibles. Zona horaria y moneda La configuración de la zona horaria y divisa específicas de la aplicación no afecta los datos en Data Locker. Aplican las siguientes condiciones:
Valores con coma: estas comas se encuentran entre comillas dobles `"`, por ejemplo, |
Opciones de almacenamiento
Precaución
Si utilizas la opción de almacenamiento propia del marketer:
- Asegúrate de cumplir con las regulaciones de privacidad de datos como el RGPD y las políticas de retención de datos de redes de publicidad/SRN.
- No utilices la solución de almacenamiento propia del marketer para enviar datos a terceros.
- Los datos se escriben en un propietario de almacenamiento de tu elección de la siguiente manera:
- Almacenamiento de AppsFlyer
- Almacenamiento de clientes: AWS, GCS, Azure, Yandex, BigQuery y Snowflake
- Puedes cambiar la selección del almacenamiento en cualquier momento.
- Si cambias el almacenamiento, ocurre lo siguiente:
- Comenzamos a escribir en el almacenamiento recién seleccionado en una hora.
- Seguimos escribiendo en el almacenamiento existente durante un período de transición de 7 días. El tiempo de vencimiento del período de transición se muestra en la interfaz de usuario. Usa el período de transición para actualizar tus procesos de carga de datos. Puedes reiniciar el período de transición o volver al bucket de AppsFlyer si es necesario.
- Cambio de almacenamiento: puedes migrar de una opción de almacenamiento a otra utilizando la opción de almacenamiento múltiple y enviando datos a varios destinos simultáneamente. Una vez que hayas completado la migración y las pruebas, elimina la opción de almacenamiento que ya no necesitas.
Almacenamiento propiedad de AppsFlyer (AWS) | Almacenamiento propio del marketer (GCS, AWS, Azure, Yandex, BigQuery, Snowflake) | |
---|---|---|
Nombre del bucket | Configurado por AppsFlyer |
Ejemplo: |
Propiedad del almacenamiento | AppsFlyer | Marketer |
Plataforma del almacenamiento | AWS | AWS, GCS, Azure, Yandex, BigQuery, Snowflake |
Credenciales para que accedas a los datos | Disponible en la interfaz de usuario de Data Locker para los administradores de tu cuenta de AppsFlyer | AppsFlyer no las conoce. Usa las credenciales proporcionadas por el proveedor de la nube. |
Retención de datos | Los datos se eliminan después de 14 días | Responsabilidad del marketer |
Solicitudes de eliminación de datos | Responsabilidad de AppsFlyer | Responsabilidad del marketer |
de la nube | AppsFlyer controla el almacenamiento. El cliente tiene acceso de lectura. |
El marketer controla el almacenamiento.
|
Capacidad de almacenamiento | Gestionado por AppsFlyer | Gestionado por el marketer |
Control de acceso mediante puntos de conexión de VPC con políticas de bucket | No corresponde | [Opcional] En AWS, si implementas la seguridad de punto de conexión de VPC a nivel bucket, debes agregar a la lista los servidores de AppsFlyer. |
Aviso a los agentes de seguridad en el caso de almacenamiento controlado por el cliente
Considera:
- El bucket o destino es para uso exclusivo de AppsFlyer. No debe haber ninguna otra entidad que escriba a un destino determinado.
- Puedes eliminar datos en el destino 25 horas después de que escribamos los datos.
- Los datos escritos en el destino son una copia de los datos que ya están en nuestros servidores. Los datos continúan estando en nuestros servidores de acuerdo con nuestra política de retención.
- Por motivos técnicos, a veces eliminamos y reescribimos los datos. Por esta razón, requerimos permisos de lista y eliminación. Ninguno de estos permisos supone un riesgo de seguridad para ti. En el caso de la lista, somos la única entidad que escribe en el bucket. En el caso de la eliminación, podemos volver a generar los datos.
- Para obtener información adicional, puedes contactar a nuestro equipo de seguridad a través de hello@appsflyer.com o a tu CSM.
Principios de las conexiones múltiples (más de un destino)
En Data Locker, puedes enviar algunos o todos tus datos a 2 destinos (definidos en la configuración de la conexión). Por ejemplo, puedes enviar los datos de la aplicación A a AWS y los de la aplicación B a GCS.
Cada conexión consiste en un conjunto completo de configuraciones de Data Locker, incluido un destino. Las configuraciones de las conexiones son independientes entre sí.
Al administrar tus conexiones, ten en cuenta lo siguiente:
- En la configuración de Data Locker, las conexiones se muestran en pestañas. Cada conexión tiene su propia pestaña de configuración desde la que puedes administrar la conexión. El icono de cada pestaña representa el tipo de almacenamiento.
- Para ver los detalles de la conexión, duplicar una conexión o eliminar una conexión, haz clic en : (opciones).
Procedimientos
Configurar el Data Locker
Usa este procedimiento para configurar el Data Locker. Todos los cambios en la configuración de Data Locker tardan hasta 3 horas en surtir efecto.
Requisitos previos
Para configurar el almacenamiento propio del marketer:
Si estás configurando Data Locker utilizando un servicio de almacenamiento en la nube propio del marketer, completa uno o más de los siguientes procedimientos ahora.
- Configura:
Nota: Si no tienes una suscripción a Data Locker y accedes a las analíticas de cohortes o a los datos de SKAN, debes completar igualmente un procedimiento de servicio de almacenamiento en la nube propio del marketer.
Para configurar el Data Locker:
- Un administrador debe realizar la configuración.
- En Appsflyer, accede a Integración > Data Locker.
- [Opcional] Si ya tienes un destino de Data Locker activo y quieres agregar un destino, haz clic en Agregar conexión. Asigna un nombre a tu conexión.
-
Selecciona un destino de datos de servicio en la nube. Realiza una de las siguientes acciones:
- Selecciona el bucket de AppsFlyer AWS (opción disponible solo para suscriptores de Data Locker). Haz clic en Guardar y continúa con el paso 5.
- Selecciona S3.
- Introduce el nombre de tu bucket AWS S3. El prefijo
af-
es obligatorio, y debe introducirse manualmente. - Haz clic en Probar conexión.
- Verifica que no se muestre ningún mensaje de error que indique que la ruta del bucket es inválida.
- Selecciona si deseas hacer que esta conexión sea compatible con Adobe Experience Platform. Si lo seleccionas, haz clic en Guardar y continúa con el Paso 6.
- Haz clic en Guardar.
- Introduce el nombre de tu bucket AWS S3. El prefijo
- Selecciona GCS.
- Introduce el nombre de tu bucket de GCS.
- Haz clic en Probar conexión.
- Verifica que no se muestre ningún mensaje de error que indique que la ruta del bucket es inválida.
- Selecciona si deseas hacer que esta conexión sea compatible con Adobe Experience Platform. Si lo seleccionas, haz clic en Guardar y continúa con el Paso 6.
- Haz clic en Guardar.
- [Beta] Selecciona Azure.
- Ingresa tu nombre de conexión, nombre de cuenta de almacenamiento y clave.
- Verifica que no se muestre ningún mensaje de error que indique que la ruta del bucket es inválida.
- Selecciona si deseas hacer que esta conexión sea compatible con Adobe Experience Platform. Si lo seleccionas, haz clic en Guardar y continúa con el Paso 6.
- Haz clic en Guardar.
- [Beta] Selecciona Yandex.
- Ingresa tu Nombre de bucket, Clave de acceso y Clave secreta.
- Verifica que no se muestre ningún mensaje de error que indique que la ruta del bucket es inválida.
- Selecciona si deseas hacer que esta conexión sea compatible con Adobe Experience Platform. Si lo seleccionas, haz clic en Guardar y continúa con el Paso 6.
- Haz clic en Guardar.
- Selecciona BigQuery.
- Introduce tu ID de proyecto de BigQuery y el nombre del conjunto de datos.
- Haz clic en Probar conexión.
- Verifica que no se muestre ningún mensaje de error que indique que la ruta del bucket es inválida.
- Haz clic en Guardar y continúa con el Paso 6.
- Selecciona Snowflake.
- Introduce tu región de Snowflake y tu ID de cuenta.
- Haz clic en Probar conexión.
- Verifica que no se muestre ningún mensaje de error que indique que la ruta del bucket es inválida.
- Haz clic en Guardar y continúa con el Paso 6.
- Completa la sección Configuración de datos:
- Selecciona el formato de archivo que desees:
- [Predeterminado] Parquet
- CSV
- Selecciona el tipo de compresión de archivos que desees:
- Snappy (solo disponible para archivos Parquet)
- GZIP
- Sin comprimir
- Selecciona el número máximo de filas que quieras en tu archivo: Ya sea 10 000, 25 000, 50 000, 100 000, 200 000 o 500 000. Más filas en el archivo significa menos archivos pero un tamaño de archivo más grande.
- Selecciona la estructura de carpetas (segregación de datos):
- [Predeterminada] Unificada
- Segregado por aplicación
- Selecciona el formato de archivo que desees:
- Completa la sección de contenido de Data Locker:
- Selecciona una o más aplicaciones para incluir en los reportes. Selecciona todo para incluir automáticamente las aplicaciones agregadas en el futuro.
- Haz clic en Aplicar.
- [Opcional] Selecciona una o más fuentes de medios para incluirlas en los reportes.
- Predeterminada=All. Significa que las fuentes de medios que agregues en el futuro se agregan automáticamente.
- Haz clic en Aplicar.
- [Opcional] Selecciona los campos que deseas incluir en los reportes. Nota: A veces ponemos a disposición campos adicionales. Ten esto en cuenta en tu proceso de importación de datos.
- Haz clic en Aplicar.
- Selecciona los tipos de reportes. Debes seleccionar al menos 1.
- [Opcional] Para el reporte de eventos in-app, selecciona los eventos in-app que deseas incluir. Si tienes más de 100 tipos de eventos in-app, no puedes buscarlos. Introduce sus nombres con precisión para seleccionarlos.
- Predeterminada=All. Significa que los eventos in-app que agregues en el futuro se agregan automáticamente.
- Haz clic en Aplicar.
- Haz clic en Guardar conexión. Una de las siguientes situaciones ocurre:
- Si seleccionaste AppsFLyer AWS bucket:
- Se crea un AWS bucket exclusivo. Se muestran las credenciales del bucket.
- Se puede acceder al bucket utilizando las credenciales. Las credenciales brindan acceso al bucket solo para lectura.
- Si seleccionaste uno de tus servicios de almacenamiento en la nube: los datos se escribirán en tu servicio dentro de las 3 horas.
- Si seleccionaste AppsFLyer AWS bucket:
Restablecer credenciales
Un administrador puede restablecer las credenciales del bucket de AppsFlyer en cualquier momento. Nota: Si restableces las credenciales, debes actualizar los scripts de importación de datos con las credenciales actualizadas.
Para restablecer las credenciales del almacenamiento de propiedad de AppsFlyer:
- En Appsflyer, accede a Integración > Data Locker.
- Selecciona el destino propiedad de AppsFlyer.
- En la sección Credenciales, haz clic en Restablecer credenciales.
Aparece una ventana de confirmación. - Haz clic en Restablecer.
- Espera aproximadamente 20 segundos hasta que aparezca el mensaje Credenciales restablecidas correctamente.
Las credenciales actualizadas están disponibles.
Información adicional
Rasgos y limitaciones
Característica | Observaciones |
---|---|
Redes de publicidad | No apto para el uso por parte de redes de publicidad |
Agencias | No apto para el uso por parte de agencias. |
Zona horaria específica de la aplicación | No corresponde. Las carpetas de Data Locker se dividen en horas usando UTC. Los eventos reales contienen horarios en UTC. Convierte los horarios a cualquier otra zona horaria según sea necesario. Independientemente de la zona horaria de tu aplicación, el lapso desde que ocurre el evento hasta que se registra en Data Locker sigue siendo el mismo. |
Divisa específica de la aplicación | No se admite |
Limitaciones de tamaño | No correponde |
Actualización de los datos | Los datos se actualizan de acuerdo con la actualización específica de los datos del reporte que se detalla en este artículo. |
Historial de datos | No se admite. Si necesitas datos históricos, algunos reportes, pero no todos, están disponibles a través de Pull API. |
Datos restringidos | Los campos en algunos reportes están restringidos debido a limitaciones de privacidad. Aprender más |
Acceso de usuario | Solo los usuarios de la cuenta con los permisos necesarios pueden configurar Data Locker. |
Aplicación única/múltiples aplicaciones | Admite múltiples aplicaciones. Data Locker está a nivel cuenta |
Resolución de Problemas
- Síntoma: no se pueden recuperar datos con AWS CLI
- Mensaje de error: Se produjo un error (AccessDenied) al solicitar la operación ListObjectsV2 operation: Acceso denegado
- Causa: las credenciales de AWS que se utilizan no son las credenciales correctas para el bucket de AppsFlyer. Esto puede ser causado por tener credenciales múltiples o inválidas en tu máquina.
-
Solución:
- Utiliza un método diferente, como Cyberduck, para acceder al bucket, es decir, que no sea CLI. Haz esto para verificar que las credenciales que estás utilizando funcionen. Si puedes conectarte con Cyberduck, esto indica un problema con el caché de credenciales.
-
Actualiza el caché de credenciales de AWS.
Captura de pantalla de AWS
Recuperación de datos de AWS
Utiliza tu herramienta de recuperación de datos de AWS preferida, AWS CLI, o una de las herramientas descritas en las secciones a continuación. Nota: Las instrucciones exactas son adecuadas para los buckets de propiedad de AppsFlyer. Adapta las instrucciones según sea necesario si la conexión es a tu bucket.
AWS CLI
Antes de comenzar:
- Instala AWS CLI en tu computadora.
- En AppsFlyer, accede a Data Locker y recupera la información incluida en el panel de credenciales.
Para usar AWS CLI:
- Abre la terminal. Para hacerlo en Windows, <Windows>+<R>, haz clic en Aceptar.
Se abre la ventana de línea de comando. - Ingresa aws configure.
- Ingresa la clave de acceso de AWS tal como aparece en el panel de credenciales.
- Ingresa tu clave secreta de AWS tal como aparece en el panel de credenciales.
- Ingresa eu-west-1.
- Presiona Entrar (Ninguno).
Usa los comandos de CLI que siguen según sea necesario.
En los siguientes comandos, se puede encontrar el valor de {home-folder}
Para enumerar carpetas en tu bucket:
aws s3 ls s3://af-ext-reports/{home-folder}/data-locker-hourly/
Enumeración de archivos y carpetas
Hay tres tipos de carpetas en tu bucket de Data Locker:
- Tipo de reporte
t=
- Fecha
dt=
- Hora
h=
Para enumerar todos los reportes de un tipo de reporte específico:
aws s3 ls s3://af-ext-reports/{home-folder}/data-locker-hourly/t=installs/
Para enumerar todos los reportes de un tipo de reporte específico para un día específico:
aws s3 ls s3://af-ext-reports/{home-folder}/data-locker-hourly/t=installs/dt=2019-01-17
Para enumerar todos los reportes de un tipo de reporte específico en un hora específica para un día específico:
aws s3 ls s3://af-ext-reports/{home-folder}/data-locker-hourly/t=installs/dt=2019-01-17/h=23
Para descargar archivos para una fecha específica:
aws s3 cp s3://af-ext-reports/<home-folder>/data-locker-hourly/t=installs/dt=2020-08-01/h=9/part-00000.gz ~/Downloads/
Cyberduck
Antes de comenzar:
- Instala el cliente Cyberduck.
- En AppsFlyer, accede a Data Locker y recupera la información incluida en el panel de credenciales.
Para configurar Cyberduck:
- En Cyberduck, haz clic en Acción.
- Selecciona Marcador nuevo. Se abre la ventana.
- En el primer campo (marcado como [1] en la siguiente captura de pantalla), selecciona Amazon S3.
- Completa los campos de la siguiente manera:
- Apodo: texto libre
- Servidor: s3.amazonaws.com
- ID de clave de acceso: copia la clave de acceso de AWS tal como aparece en el panel de credenciales en AppsFlyer.
- ID de clave secreta: copia la clave secreta del bucket tal como aparece en el panel de credenciales en AppsFlyer.
- Ruta: {Bucket Name}/{Home Folder} Por ejemplo: af-ext-reports/1234-abc-ffffffff
- Cierra la ventana. Para ello, haz clic en la X de la esquina superior derecha de la ventana.
- Selecciona la conexión.
Se muestran los directorios de datos.
Navegador Amazon S3
Antes de comenzar:
- Instala el navegador Amazon S3.
- En AppsFlyer, accede a Data Locker y recupera la información incluida en el panel de credenciales.
Para configurar el navegador Amazon S3:
- En el navegador S3, haz clic en Cuentas > Agregar Cuenta nueva.
Se abre la ventana Agregar Cuenta Nueva. - Completa los campos de la siguiente manera:
- Nombre de cuenta: texto libre.
- ID de clave de acceso: copia la clave de acceso de AWS tal como aparece en el panel de credenciales.
- Clave secreta de acceso: copia la clave secreta del bucket tal como aparece en el panel de credenciales.
- Selecciona Cifrar claves de acceso con una contraseña e ingresa una contraseña. Anota esta contraseña.
- Selecciona Usar transferencia segura.
- Haz clic en Guardar cambios.
- Haz clic en Buckets > Agregar bucket externo.
Se abre la ventana Agregar Bucket Externo.
- Ingresa el Nombre del bucket.El nombre del bucket tiene el siguiente formato: {Bucket Name}/{Home Folder}. Los valores necesarios para el nombre del bucket y la carpeta de inicio aparecen en la ventana de credenciales.
- Haz clic en Agregar bucket externo.
El bucket se crea y se muestra en el panel izquierdo de la ventana.
Ahora puedes acceder a los archivos de Data Locker.