Inventario de buckets
Escenarios
Un inventario de buckets puede enumerar objetos de un bucket, guardar la información de objeto relacionada en archivos CSV y entregar los archivos CSV al bucket especificado para almacenar archivos de inventario de buckets. De esta manera, puede gestionar fácilmente objetos en un bucket. Un bucket de origen también puede ser el bucket de destino.
- Un archivo de inventario de bucket puede contener la siguiente información relacionada con el objeto: versiones, tamaños, clases de almacenamiento, etiquetas, estados de cifrado y tiempo de última modificación.
- Puede cifrar los archivos de inventario de buckets en el modo SSE-KMS.
- Puede establecer la frecuencia (diaria o semanal) para generar archivos de inventario de buckets.
- También puede especificar un bucket para almacenar los archivos de inventario de bucket generados.
Restricciones
Versiones de bucket
- Los inventarios solo se pueden generar para los bucket de OBS 3.0, pero se pueden almacenar en bucket de OBS 3.0 o OBS 2.0.
Número de inventarios de bucket
- Un bucket puede tener un máximo de 10 inventarios.
Bucket de origen y de destino
- El bucket de origen (para el que se configura una regla de inventario de bucket) y el bucket de destino (donde se almacenan los archivos de inventario generados) deben pertenecer a la misma cuenta.
- El bucket de origen y el bucket de destino deben estar en la misma región.
- No se puede habilitar el cifrado predeterminado para el bucket de destino configurado para almacenar archivos de inventario.
Funciones
- Los archivos de inventario deben estar en formato CSV.
- OBS puede generar archivos de inventario para todos los objetos de un bucket o un grupo de objetos cuyos nombres comienzan con el mismo prefijo.
- Si un bucket tiene varias reglas de inventario, estas reglas no deben solaparse.
- Si un bucket ya tiene una regla de inventario para todo el bucket, no se pueden crear nuevas reglas de inventario que filtren objetos por prefijos. Si necesita una regla de inventario que cubra solo un subconjunto de objetos del bucket, elimine primero la regla de inventario configurada para todo el bucket.
- Si ya existe una regla de inventario que filtra objetos por un prefijo especificado, no puede crear una regla de inventario para todo el bucket. Para crear una regla de inventario para todo el bucket, asegúrese de que el bucket no tiene otras reglas de inventario que filtren los objetos por prefijos especificados.
- Si un bucket ya tiene una regla de inventario que filtra objetos por el prefijo de nombre de objeto ab, el filtro de una nueva regla de inventario no puede comenzar con a o abc. O bien, puede eliminar la regla de inventario existente y crear una nueva que filtre los objetos según sus necesidades.
- Solo se puede utilizar SSE-KMS para cifrar inventarios de bucket.
Permisos
- Los archivos de inventario son entregados al bucket de destino por un usuario del sistema de OBS. Por lo tanto, debe autorizar al usuario del sistema el permiso para escribir el bucket de destino.
Otros
- La función de inventario de bucket se ofrece de forma gratuita, pero los archivos de inventario se facturan por el espacio de almacenamiento que ocupan.
¿Cómo se configura un inventario de bucket?
- Bucket de origen: Un bucket de origen es el bucket para el que se configura un inventario. El inventario muestra los objetos almacenados en el bucket de origen.
- Bucket de destino: Un bucket de destino es donde se almacenan los archivos de inventario generados. Un bucket de origen también puede ser el bucket de destino. Puede especificar un prefijo de nombre para un inventario. A continuación, los archivos de inventario generados serán nombrados con el prefijo y guardados en el directorio con el prefijo. Si no especifica ningún prefijo de nombre para el inventario, los archivos de inventario generados se almacenan en el directorio raíz del bucket.
- Restricciones en el bucket de destino
- El bucket de destino y el bucket de origen deben pertenecer al mismo tenant.
- El bucket de destino y el bucket de origen deben estar en la misma región.
- La política del bucket de destino debe conceder a los usuarios del sistema de OBS permiso para escribir objetos en el bucket. Para obtener detalles sobre cómo autorizar dicho permiso, consulte 1.
- El bucket de destino contiene los archivos siguientes:
- Una lista de archivos de inventario
- El archivo Manifest, que contiene la lista de todos los archivos de inventario bajo una determinada configuración de inventario. Para obtener más información sobre el archivo Manifest, consulte Archivo de manifiesto.
- Restricciones en el bucket de destino
Configuración de un inventario de bucket
Puede usar OBS Console o invocar a la API para configurar un inventario de bucket. Si configura un inventario de bucket en OBS Console, se genera automáticamente una política de bucket con la configuración de permisos requerida para el bucket de destino. Si invoca a la API para configurar el inventario del bucket, debe configurar manualmente la política del bucket para el bucket de destino.
- Agregue una política de bucket para el bucket de destino.
Se debe configurar una política de bucket para el bucket de destino, para conceder a los usuarios del sistema OBS el permiso para escribir objetos en el bucket de destino. El formato de la política de bucket es el siguiente. Reemplace destbucket por el nombre real del bucket de destino.
{ "Statement": [ { "Effect": "Allow", "Sid": "1", "Principal": {"Service": "obs"}, "Resource": ["destbucket/*"], "Action": ["PutObject"] } ] }
- Configura el inventario de bucket.
Proporcionamos múltiples herramientas para configurar un inventario de cubetas. Para obtener más información, véase Cómo usarlo.
Contenido de un archivo de inventario
El contenido de un archivo de inventario se puede configurar al crear el inventario. Para obtener más información sobre todos los campos posibles, consulte Tabla 1.
Metadato |
Descripción |
---|---|
Bucket |
Nombre del bucket de origen |
Key |
El nombre de un objeto. Cada objeto de un bucket tiene una clave única. (Los nombres de objeto en el archivo de inventario están codificados por URL usando el conjunto de caracteres UTF-8 y solo se pueden usar después de decodificar.) |
VersionId |
ID de versión de un objeto. Si el valor de IncludedObjectVersions en la configuración de inventario es Current, este campo no se incluye en el archivo de inventario. |
IsLatest |
Si la versión del objeto es la última, este parámetro es True. (Si el valor de IncludedObjectVersions en la configuración de inventario es Current, este campo no se incluye en el archivo de inventario.) |
IsDeleteMarker |
Cuando el control de versiones está habilitado para el bucket de origen, si se elimina un objeto, se genera un nuevo metadato de objeto para el objeto y el IsDeleteMarker de los metadatos se establece en true. (Si el valor de IncludedObjectVersions en la configuración de inventario es Current, este campo no se incluye en el archivo de inventario.) |
Size |
Tamaño del objeto, en bytes. |
LastModifiedDate |
Fecha de creación del objeto o fecha de la última modificación |
ETag |
Digestión hexadecimal de MD5 del objeto. ETag es el identificador único del contenido del objeto. Se puede utilizar para identificar si se ha cambiado el contenido del objeto. Por ejemplo, si el valor ETag es A cuando se carga un objeto y el valor ETag ha cambiado a B cuando se descarga el objeto, indica que se cambia el contenido del objeto. |
StorageClass |
Clase de almacenamiento de un objeto |
IsMultipartUploaded |
Indica si se carga un objeto en el modo de varias partes. |
ReplicationStatus |
Estado de replicación entre regiones de un objeto |
EncryptionStatus |
Estado de cifrado de un objeto |
Nombre de archivo de inventario
El nombre de un archivo de inventario tiene el siguiente formato:
destinationPrefix/sourceBucketName/inventoryId/yyyy-MM-dd'T'HH-mm'Z'/files/UUID_index.csv
- destinationPrefix: el prefijo de nombre de archivo de inventario configurado al crear la regla de inventario. Los archivos de inventario generados bajo la regla reciben el nombre del prefijo, lo que puede facilitar la clasificación de los archivos de inventario. Si no se especifica ningún prefijo, el prefijo predeterminado es BucketInventory.
- sourceBucketName: Nombre del bucket de origen para el que está configurado un inventario. Este campo se puede utilizar para diferenciar archivos de inventario de diferentes los bucket de origen, si esos archivos de inventario se guardan en el mismo bucket de destino.
- inventoryId: si un bucket de origen tiene varias reglas de inventario cuyos archivos de inventario se guardan en el mismo bucket de destino, este campo se puede utilizar para identificar diferentes reglas de inventario.
- yyyy-MM-dd'T'HH-mm'Z': Hora y fecha de inicio para escanear el bucket de destino cuando se genera un archivo de inventario. Es posible que los objetos cargados en el bucket de origen después de este tiempo no se muestren en el archivo de inventario.
- UUID_index.csv: uno de los archivos de inventario
Archivo de manifiesto
Si hay un gran número de objetos en un bucket, se pueden generar múltiples archivos de inventario para una única configuración de inventario. Se necesita algún tiempo para generar estos archivos. Por ejemplo, si 200,000 hay objetos en un bucket, se tarda aproximadamente 1.5 minutos en generar todos los archivos de inventario. Una o dos horas después de que se hayan generado todos los archivos de inventario, se generará un archivo manifest.json. El archivo manifest.json contiene información acerca de todos los archivos de inventario generados esta vez, incluidos:
- sourceBucket: nombre del bucket fuente
- destinationBucket: nombre del bucket de destino
- version: versión del inventario
- fileFormat: formato de archivos de inventario
- fileSchema: campos de metadatos de objetos contenidos en los archivos de inventario
- files: lista de todos los archivos de inventario
- key: nombre del archivo de inventario
- size: tamaño de un archivo de inventario, en bytes
- inventoriedRecord: número de registros contenidos en un archivo de inventario
{ "sourceBucket":"user001", "destinationBucket":"bucket001", "version":"2019-01-03", "fileFormat":"CSV", "fileSchema":"Bucket,Key,Size,LastModifiedDate,ETag,StorageClass,IsMultipartUploaded,ReplicationStatus,EncryptionStatus", "files":[ { "key":"inventory/user001/test_id/2019-01-03T12-28Z/files/0000016813AF58E66806C1E2D7F15155_1.csv", "size":6705647390, "inventoriedRecord":70585762, } ] }
El nombre de un archivo de manifest es el siguiente (para detalles sobre cada campo, vea Nombre de archivo de inventario):
destinationPrefix/sourceBucketName/inventoryId/yyyy-MM-dd'T'HH-mm'Z'/manifest.json
Cómo usarlo
Puede configurar inventarios de buckets mediante OBS Console, APIs o SDKs.
Herramienta |
Referencia |
---|---|
OBS Console |
|
SDK |
OBS admite kits de desarrollo de software (SDK) en varios idiomas. Para obtener más información, consulte la guía para desarrolladores correspondiente en la página de Descripción de los SDK. |
API |