Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2022-11-07 GMT+08:00

Inventario de buckets

Escenario de la aplicación

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

  • Los inventarios de bucket solo se pueden generar para cubetas OBS 3.0, pero se pueden almacenar en OBS 3.0 u OBS 2.0.
  • Un bucket puede tener un máximo de 10 reglas de inventario.
  • 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.
  • 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 sólo 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.
  • Los archivos de inventario de cucharón solo se pueden cifrar en el modo SSE-KMS.
  • La función de inventario de cubeta se ofrece de forma gratuita, pero los archivos de inventario se facturan por el espacio de almacenamiento que utilizan.
  • No se puede habilitar el cifrado predeterminado para el bucket de destino configurado para almacenar archivos de inventario.
  • Los archivos de inventario son entregados al bucket de destino por un usuario del sistema OBS. Por lo tanto, debe autorizar al usuario del sistema el permiso para escribir el bucket de destino.

¿Cómo se configura un inventario de bucket?

Antes de la configuración, debe comprender brevemente qué es un bucket de origen o un bucket de destino.
  • 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 inquilino.
      • 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 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.

Configuración de un inventario de bucket

Puedes usar OBS Console o llamar a la API para configurar un inventario de buckets. 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 llama a la API para configurar el inventario del bucket, debe configurar manualmente la política del bucket para el bucket de destino.

  1. 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"]
    		}
    	]
    }
  1. Configura el inventario de bucket.

    Proporcionamos múltiples herramientas para configurar un inventario de cubetas. Para más detalles, consulte ¿Cómo usar esta función?.

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.

Tabla 1 Metadatos de objeto enumerados en un archivo de inventario

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 metadatos 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 del objeto MD5. 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, incluyendo:

  • 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
El siguiente es un ejemplo de un archivo simple de manifest.json.
{
        "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 se notifica a un usuario cuando se generan archivos de inventario?

Puede habilitar SMN (el servicio de notificación de mensajes) para el bucket de destino. Al hacerlo, puede recibir mensajes SMS o correos electrónicos cada vez que se generen los archivos de inventario y el archivo de manifest. Para obtener más información acerca de SMN, consulte Notificación de evento.

El siguiente es un ejemplo sencillo de configuración SMN. destinationPrefix/sourceBucketName indica el prefijo del archivo de manifest. destinationPrefix es el prefijo de nombre configurado para los archivos de inventario y sourceBucketName es el bucket de origen para el que está configurado el archivo de inventario. El manifest.json es el sufijo del archivo manifest.

<NotificationConfiguration>
  <TopicConfiguration>
    <Id>01</Id>
    <Filter>
      <Object>
        <FilterRule>
          <Name>prefix</Name>
          <Value>destination-prefix/source-bucket</Value>
        </FilterRule>
        <FilterRule>
          <Name>suffix</Name>
          <Value>manifest.json</Value>
        </FilterRule>
      </Object>
    </Filter>
    <Topic>urn:smn:southchina:11aa22bb:notification</Topic>
    <Event>ObjectCreated:Put</Event>
  </TopicConfiguration>
</NotificationConfiguration>

¿Cómo usar esta función?

Puede configurar inventarios de buckets mediante la consola OBS, las API o los SDK.

Herramienta

Referencia

Consola de OBS

Configuración del inventario de bucket

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 general del SDK.

API

Configuración de inventarios de bucket