Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-24 GMT+08:00

Inventário de bucket

Cenário de aplicação

Um inventário de bucket pode listar objetos em um bucket, salvar as informações do objeto relacionado em arquivos CSV, e entregar os arquivos CSV ao bucket especificado para armazenar arquivos de inventário de bucket. Desta forma, você pode facilmente gerenciar objetos em um bucket. Um bucket de origem também pode ser o bucket de destino.

  • Um arquivo de inventário de bucket pode conter as seguintes informações relacionadas a objetos: versões, tamanhos, classes de armazenamento tags, status de encriptação, e hora da última modificação.
  • Você pode encriptar os arquivos de inventário do bucket no modo SSE-KMS.
  • Você pode definir a frequência (diariamente ou semanalmente) para gerar arquivos de inventário de bucket.
  • Você também pode especificar um bucket para armazenar os arquivos de inventário de bucket gerados.

Restrições

  • Os estoques de períodos só podem ser gerados para períodos de OBS 3.0, mas podem ser armazenados em OBS 3.0 ou em OBS 2.0.
  • Um bucket pode ter no máximo 10 regras de inventário.
  • O bucket de origem (para o qual uma regra de inventário de bucket é configurada) e o bucket de destino (onde os arquivos de inventário gerados são armazenados) devem pertencer à mesma conta.
  • O bucket de origem e o bucket de destino devem estar na mesma região.
  • Os arquivos de inventário devem estar no formato CSV.
  • OBS pode gerar arquivos de inventário para todos os objetos em um bucket ou um grupo de objetos cujos nomes começam com o mesmo prefixo.
  • Se um bucket tiver várias regras de inventário, essas regras não devem se sobrepor.
    • Se um bucket já tiver uma regra de inventário para todo o bucket, novas regras de inventário que filtram objetos por prefixos não poderão ser criadas. Se você precisar de uma regra de inventário que cubra apenas um subconjunto de objetos no bucket, primeiro exclua a regra de inventário configurada para o bucket inteiro.
    • Se já existir uma regra de inventário que filtra objetos por um prefixo especificado, não será possível criar uma regra de inventário para o bucket inteiro. Para criar uma regra de inventário para o bucket inteiro, certifique-se de que o bucket não tenha outras regras de inventário que filtrem objetos por prefixos especificados.
    • Se um bucket já tiver uma regra de inventário que filtra objetos pelo prefixo de nome de objeto ab, o filtro de uma nova regra de inventário não poderá começar com a ou abc. Ou, você pode excluir a regra de inventário existente e criar uma nova que filtre objetos de acordo com suas necessidades.
  • Os arquivos de inventário de bucket podem ser encriptados somente no modo SSE-KMS.
  • A função de inventário de bucket é oferecida gratuitamente, mas os arquivos de inventário são cobrados pelo espaço de armazenamento usado.
  • A encriptação padrão não pode ser ativada para o bucket de destino configurado para armazenar arquivos de inventário.
  • Os arquivos de inventário são entregues ao bucket de destino por um usuário do sistema de OBS. Portanto, você precisa autorizar o usuário do sistema a permissão para gravar o bucket de destino.

Como um inventário de bucket é configurado?

Antes da configuração, você precisa entender brevemente o que é um bucket de origem ou um bucket de destino.
  • Bucket de origem: Um bucket de origem é o bucket para o qual um inventário é configurado. O inventário lista os objetos armazenados no bucket de origem.
  • Bucket de destino: Um bucket de destino é onde os arquivos de inventário gerados são armazenados. Um bucket de origem também pode ser o bucket de destino. Você pode especificar um prefixo de nome para um inventário. Em seguida, os arquivos de inventário gerados serão nomeados com o prefixo e salvos no diretório com o prefixo. Se você não especificar nenhum prefixo de nome para o inventário, os arquivos de inventário gerados serão armazenados no diretório raiz do bucket.
    • Restrições no bucket de destino
      • O bucket de destino e o bucket de origem devem pertencer ao mesmo locatário.
      • O bucket de destino e o bucket de origem devem estar na mesma região.
      • A política do bucket de destino deve conceder aos usuários do sistema de OBS a permissão para gravar objetos no bucket. Para obter detalhes sobre como autorizar essa permissão, consulte 1.
    • O bucket de destino contém os seguintes arquivos:
      • Uma lista de arquivos de inventário
      • O arquivo Manifest, que contém a lista de todos os arquivos de inventário sob uma determinada configuração de inventário. Para obter detalhes sobre o arquivo Manifest, consulte Arquivo de manifesto.

Configuring a Bucket Inventory

Use console de OBS ou chame a API para configurar um inventário de bucket. Se você configurar um inventário de bucket no console de OBS, uma política de bucket com a configuração de permissão necessária será gerada automaticamente para o bucket de destino. Se você chamar a API para configurar o inventário do bucket, precisará configurar manualmente a política do bucket para o bucket de destino.

  1. Adicione uma política de bucket para o bucket de destino.

    Uma política de bucket deve ser configurada para o bucket de destino para conceder aos usuários do sistema de OBS a permissão para gravar objetos no bucket de destino. O formato da política de bucket é o seguinte. Substitua destbucket pelo nome real do bucket de destino.

    {
    	"Statement": [
    		{
    			"Effect": "Allow",
    			"Sid": "1",
    			"Principal": {"Service": "obs"},
                            "Resource": ["destbucket/*"],
    			"Action": ["PutObject"]
    		}
    	]
    }
  1. Configure um inventário de buckets.

    Fornecemos várias ferramentas para configurar um inventário de buckets. Para mais detalhes, consulte Como usar essa função.

Conteúdo em um arquivo de inventário

O conteúdo em um arquivo de inventário pode ser configurado ao criar o inventário. Para obter detalhes sobre todos os campos possíveis, consulte Tabela 1.

Tabela 1 Metadados do objeto listados em um arquivo de inventário

Metadados

Descrição

Bucket

Nome do bucket de origem

Key

O nome de um objeto. Cada objeto em um bucket possui uma chave exclusiva. (Nomes de objetos no arquivo de inventário são codificados por URL usando o conjunto de caracteres UTF-8 e podem ser usados somente após serem decodificados.)

VersionId

ID de versão de um objeto. Se o valor de IncludedObjectVersions na configuração de inventário for Current, esse campo não será incluído no arquivo de inventário.

IsLatest

Se a versão do objeto for a mais recente, este parâmetro é True. (Se o valor de IncludedObjectVersions na configuração de inventário for Current, esse campo não será incluído no arquivo de inventário.)

IsDeleteMarker

Quando o controle de versão estiver ativado para o bucket de origem, se um objeto for excluído, um novo metadado de objeto será gerado para o objeto e o IsDeleteMarker dos metadados será definido como true. (Se o valor de IncludedObjectVersions na configuração de inventário for Current, esse campo não será incluído no arquivo de inventário.)

Size

Tamanho do objeto, em bytes.

LastModifiedDate

Data de criação do objeto ou data da última modificação

ETag

Resumo hexadecimal do objeto MD5. ETag é o identificador exclusivo do conteúdo do objeto. Ele pode ser usado para identificar se o conteúdo do objeto é alterado. Por exemplo, se o valor de ETag for A quando um objeto for carregado e o valor de ETag for alterado para B quando o objeto for baixado, isso indicará que o conteúdo do objeto foi alterado.

StorageClass

Classe de armazenamento de um objeto

IsMultipartUploaded

Indica se um objeto é carregado no modo multipart.

ReplicationStatus

Status de replicação entre regiões de um objeto

EncryptionStatus

Status da encriptação de um objeto

Nome do arquivo de inventário

O nome de um arquivo de inventário está no seguinte formato:

destinationPrefix /sourceBucketName / inventoryId/ yyyy-MM-dd'T'HH-mm'Z' /files/UUID_index .csv
  • destinationPrefix: O prefixo do nome do arquivo de inventário configurado ao criar a regra de inventário. Arquivos de inventário gerados sob a regra são nomeados após o prefixo, o que pode facilitar a classificação de arquivos de inventário. Se nenhum prefixo for especificado, o prefixo padrão será BucketInventory.
  • sourceBucketName: Nome do bucket de origem para o qual um inventário está configurado. Esse campo pode ser usado para diferenciar arquivos de inventário de buckets de origem diferentes, se esses arquivos de inventário forem salvos no mesmo bucket de destino.
  • inventoryId: Se um bucket de origem tiver várias regras de inventário cujos arquivos de inventário sejam salvos no mesmo bucket de destino, esse campo poderá ser usado para identificar regras de inventário diferentes.
  • yyyy-MM-dd'T'HH-mm'Z': Hora e data de início para a verificação do bucket de destino quando um arquivo de inventário é gerado. Os objetos carregados no bucket de origem após esse período podem não ser listados no arquivo de inventário.
  • UUID_index.csv: um dos arquivos de inventário

Arquivo de manifesto

Se houver um grande número de objetos em um bucket, vários arquivos de inventário podem ser gerados para uma única configuração de inventário. Leva algum tempo para gerar esses arquivos. Por exemplo, se houver objetos 200.000 em um bucket, levará cerca de 1,5 minutos para gerar todos os arquivos de inventário. Uma ou duas horas após todos os arquivos de inventário serem gerados, um arquivo manifest.json será gerado. O arquivo manifest.json contém informações sobre todos os arquivos de inventário gerados desta vez, incluindo:

  • sourceBucket: nome do bucket de origem
  • destinationBucket: nome do bucket de destino
  • version: versão do inventário
  • fileFormat: formato dos arquivos de inventário
  • fileSchema: campos de metadados do objeto contidos nos arquivos de inventário
  • files:: lista de todos os arquivos de inventário
  • key: nome do arquivo de inventário
  • size: tamanho de um arquivo de inventário, em bytes
  • inventoriedRecord: número de registros contidos em um arquivo de inventário
O seguinte é um exemplo de um arquivo manifest.json simples.
{
        "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,
                }
        ]
}

O nome de um arquivo de manifest é o seguinte (para obter detalhes sobre cada campo, consulte Nome do arquivo de inventário):

destinationPrefix /sourceBucketName /inventoryId /yyyy-MM-dd'T'HH-mm'Z' /manifest.json

Como um usuário é notificado quando os arquivos de inventário são gerados?

Você pode habilitar SMN (o serviço de notificação de mensagens) para o bucket de destino. Ao fazer isso, você pode receber mensagens SMS ou e-mails sempre que os arquivos de inventário e o arquivo de manifest são gerados. Para obter mais informações sobre SMN, consulte Notificação de evento.

A seguir, um exemplo simples de configuração de SMN. destinationPrefix/sourceBucketName indica o prefixo do arquivo de manifest. destinationPrefix é o prefixo de nome configurado para arquivos de inventário, e sourceBucketName é o bucket de origem para o qual o arquivo de inventário está configurado. O manifest.json é o sufixo do arquivo 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>

Como usar essa função

Você pode configurar inventários de buckets usando console de OBS, as API, ou os SDK.

Ferramenta

Referência

Console de OBS

Configurar inventário de um bucket

Os SDK

OBS suporta kits de desenvolvimento de software (os SDK) em vários idiomas. Para obter detalhes, consulte o guia do desenvolvedor correspondente na página Visão geral de SDK.

As API

Configuração de inventários de bucket