Atualizando o cache de objetos do bucket do Amazon S3 - AWS Storage Gateway

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualizando o cache de objetos do bucket do Amazon S3

À medida que seu cliente NFS ou SMB executa operações do sistema de arquivos, seu gateway mantém um inventário dos objetos no cache de objetos do Amazon S3 associados ao seu compartilhamento de arquivos. Seu gateway usa esse inventário em cache para reduzir a latência e a frequência das solicitações do Amazon S3. Essa operação não importa arquivos para o armazenamento em cache do S3 File Gateway. Ele atualiza somente o inventário em cache para refletir as alterações no inventário dos objetos no cache de objetos do Amazon S3.

Para atualizar o cache de objetos do bucket do S3 para seu compartilhamento de arquivos, selecione o método mais adequado ao seu caso de uso na lista a seguir e conclua o procedimento correspondente abaixo.

nota

Independentemente do método usado, listar um diretório pela primeira vez o inicializa, o que faz com que o gateway liste o conteúdo de metadados do diretório do Amazon S3. O tempo necessário para inicializar um diretório é proporcional ao número de entradas nesse diretório.

Configure uma agenda automatizada de atualização de cache usando o console do Storage Gateway

O procedimento a seguir configura uma agenda de atualização automática de cache com base em um valor de Tempo de Vida (TTL) especificado por você. Antes de configurar um cronograma de atualização de cache baseado em TTL, considere o seguinte:

  • O TTL é medido como o período de tempo desde a última atualização do cache de um determinado diretório.

  • A atualização do cache baseada em TTL ocorre somente quando um determinado diretório é acessado após a expiração do período TTL especificado.

  • A atualização não é recursiva. Ela ocorre somente nos diretórios específicos que estão sendo acessados.

  • A atualização gera custos de API do Amazon S3 somente em diretórios que não foram sincronizados desde a expiração do TTL.

    • Os diretórios são sincronizados somente se forem acessados pela atividade NFS ou SMB.

    • A sincronização não ocorre com mais frequência do que o período TTL que você especifica.

  • A configuração da atualização de cache baseada em TTL é recomendada somente se você atualizar com frequência o conteúdo do seu bucket do Amazon S3 diretamente, fora do fluxo de trabalho entre o gateway e o bucket do Amazon S3.

  • As operações NFS e SMB que acessam diretórios expirados TTLs serão bloqueadas enquanto o gateway atualiza o conteúdo do diretório.

    nota

    Como a atualização do cache pode bloquear as operações de acesso ao diretório, recomendamos configurar o período TTL mais longo que seja prático para sua implantação.

Para configurar uma agenda automatizada de atualização de cache usando o console do Storage Gateway
  1. Abra o console do Storage Gateway em https://console.aws.amazon.com/storagegateway/casa.

  2. Escolha Compartilhamentos de arquivos.

  3. Escolha o compartilhamento de arquivos para o qual você deseja configurar a agenda de atualização.

  4. Em Actions, escolha Edit file share settings.

  5. Para atualizar automaticamente o cache do S3 depois, marque a caixa de seleção e defina o tempo em dias, horas e minutos para atualizar o cache do compartilhamento de arquivos usando Time To Live (TTL). TTL é o período de tempo desde a última atualização, após o qual o acesso ao diretório faria com que o File Gateway atualizasse primeiro o conteúdo desse diretório a partir do bucket do Amazon S3.

  6. Escolha Salvar alterações.

Configure um cronograma automatizado de atualização de cache usando AWS Lambda uma regra da Amazon CloudWatch

Para configurar um cronograma automatizado de atualização de cache usando AWS Lambda uma regra da Amazon CloudWatch
  1. Identifique o bucket S3 usado pelo S3 File Gateway.

  2. Verifique se a seção Evento está em branco. Ele é preenchido automaticamente mais tarde.

  3. Crie uma função do IAM e permita o Trust Relationship for lambda.amazonaws.com Lambda.

  4. Use a política a seguir.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "StorageGatewayPermissions", "Effect": "Allow", "Action": "storagegateway:RefreshCache", "Resource": "*" }, { "Sid": "CloudWatchLogsPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": "*" } ] }
  5. Crie uma função Lambda a partir do console Lambda.

  6. Use a função a seguir para sua tarefa do Lambda.

    import json import boto3 client = boto3.client('storagegateway') def lambda_handler(event, context): print(event) response = client.refresh_cache( FileShareARN='arn:aws:storagegateway:ap-southeast-2:672406474878:share/share-E51FBS9C' ) print(response) return 'Your FileShare cache has been refreshed'
  7. Em Função de execução, escolha a função do IAM que você criou.

  8. Opcional: adicione um gatilho para o Amazon S3 e selecione o evento ObjectCreatedou. ObjectRemoved

    nota

    RefreshCacheprecisa concluir um processo antes de iniciar outro. Quando você cria ou exclui muitos objetos em um bucket, o desempenho pode diminuir. Portanto, não recomendamos o uso de gatilhos do S3. Em vez disso, use a CloudWatch regra da Amazon descrita a seguir.

  9. Crie uma CloudWatch regra no CloudWatch console e adicione uma agenda. Geralmente, recomendamos uma taxa fixa de 30 minutos. No entanto, você pode usar de 1 a 2 horas em um grande bucket S3.

  10. Adicione um novo gatilho para CloudWatch eventos e escolha a regra que você acabou de criar.

  11. Salve sua configuração do Lambda. Escolha Testar.

  12. Escolha S3 PUT e personalize o teste de acordo com suas necessidades.

  13. O teste deve ser bem-sucedido. Caso contrário, modifique o JSON de acordo com seus requisitos e teste novamente.

  14. Abra o console do Amazon S3 e verifique se o evento que você criou e o ARN da função Lambda estão presentes.

  15. Faça upload de um objeto para o seu bucket do S3 usando o console do Amazon S3 ou o. AWS CLI

    O CloudWatch console gera uma CloudWatch saída semelhante à seguinte.

    { u'Records': [ {u'eventVersion': u'2.0', u'eventTime': u'2018-09-10T01:03:59.217Z', u'requestParameters': {u'sourceIPAddress': u'MY-IP-ADDRESS'}, u's3': {u'configurationId': u'95a51e1c-999f-485a-b994-9f830f84769f', u'object': {u'sequencer': u'00549CC2BF34D47AED', u'key': u'new/filename.jpeg'}, u'bucket': {u'arn': u'arn:aws:s3:::amzn-s3-demo-bucket', u'name': u'MY-GATEWAY-NAME', u'ownerIdentity': {u'principalId': u'A3OKNBZ72HVPP9'}}, u's3SchemaVersion': u'1.0'}, u'responseElements': {u'x-amz-id-2': u'76tiugjhvjfyriugiug87t890nefevbck0iA3rPU9I/s4NY9uXwtRL75tCyxasgsdgfsq+IhvAg5M=', u'x-amz-request-id': u'651C2D4101D31593'}, u'awsRegion': u'MY-REGION', u'eventName': u'ObjectCreated:PUT', u'userIdentity': {u'principalId': u'AWS:AROAI5LQR5JHFHDFHDFHJ:MY-USERNAME'}, u'eventSource': u'aws:s3'} ] }

    A invocação do Lambda fornece uma saída semelhante à seguinte.

    { u'FileShareARN': u'arn:aws:storagegateway:REGION:ACCOUNT-ID:share/MY-SHARE-ID', 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '6663236a-b495-11e8-946a-bf44f413b71f', 'HTTPHeaders': {'x-amzn-requestid': '6663236a-b495-11e8-946a-bf44f413b71f', 'date': 'Mon, 10 Sep 2018 01:03:59 GMT', 'content-length': '90', 'content-type': 'application/x-amz-json-1.1' } } }

    Seu compartilhamento NFS montado em seu cliente refletirá essa atualização.

    nota

    Para caches que atualizam a criação ou exclusão de objetos grandes em grandes buckets com milhões de objetos, as atualizações podem levar horas.

  16. Exclua seu objeto manualmente usando o console Amazon S3 ou. AWS CLI

  17. Visualize o compartilhamento NFS montado em seu cliente. Verifique se o objeto sumiu (porque seu cache foi atualizado).

  18. Verifique seus CloudWatch registros para ver o registro de sua exclusão com o eventoObjectRemoved:Delete.

    { u'account': u'MY-ACCOUNT-ID', u'region': u'MY-REGION', u'detail': {}, u'detail-type': u'Scheduled Event', u'source': u'aws.events', u'version': u'0', u'time': u'2018-09-10T03:42:06Z', u'id': u'6468ef77-4db8-0200-82f0-04e16a8c2bdb', u'resources': [u'arn:aws:events:REGION:MY-ACCOUNT-ID:rule/FGw-RefreshCache-CW'] }
    nota

    Para tarefas cron ou tarefas agendadas, seu evento de CloudWatch registro éu'detail-type': u'Scheduled Event'.

Execute uma atualização manual do cache usando o console do Storage Gateway

Para realizar uma atualização manual do cache usando o console do Storage Gateway
  1. Abra o console do Storage Gateway em https://console.aws.amazon.com/storagegateway/casa.

  2. Escolha Compartilhamentos de arquivos e, em seguida, escolha o compartilhamento de arquivos para o qual você deseja realizar a atualização.

  3. Em Actions, escolha Refresh cache.

    O tempo que o processo de atualização leva depende do número de objetos armazenados em cache no gateway e o número de objetos que foram adicionados ou removidos do bucket do S3.

Execute uma atualização manual do cache usando a API Storage Gateway

O procedimento a seguir executa uma atualização manual do cache usando a API Storage Gateway. Antes de realizar uma atualização de cache baseada em API, considere o seguinte:

  • Você pode especificar uma atualização recursiva ou não recursiva.

  • Uma atualização recursiva consome mais recursos e é mais cara.

  • A atualização incorre nos custos da API do Amazon S3 somente nos diretórios que você passa como argumentos na solicitação e nos descendentes desses diretórios se você especificar uma atualização recursiva.

  • A atualização é executada simultaneamente com outras operações enquanto o gateway está em uso.

    • As operações NFS e SMB geralmente não ficam bloqueadas durante as atualizações, a menos que uma atualização esteja ativa para o diretório que está sendo acessado pela operação.

    • O gateway não consegue determinar se o conteúdo atual do cache está obsoleto e usa seu conteúdo atual para operações de NFS e SMB, independentemente da atualização.

    • Como a atualização do cache utiliza recursos de hardware virtual do gateway, o desempenho do gateway pode ser afetado negativamente enquanto a atualização está em andamento.

  • A execução da atualização de cache baseada em API é recomendada somente se você atualizar o conteúdo do seu bucket do Amazon S3 diretamente, fora do fluxo de trabalho entre o gateway e o bucket do Amazon S3.

    nota

    Se você conhece os diretórios específicos nos quais está atualizando o conteúdo do Amazon S3 fora do fluxo de trabalho do gateway, recomendamos especificar esses diretórios em sua solicitação de atualização baseada em API para reduzir os custos da API do Amazon S3 e o impacto no desempenho do gateway.

Para realizar uma atualização manual do cache usando a API Storage Gateway
  • Envie uma solicitação HTTP POST para invocar a RefreshCache operação com os parâmetros desejados por meio da API Storage Gateway. Para obter mais informações, consulte RefreshCachena Referência da API do AWS Storage Gateway.

    nota

    O envio da RefreshCache solicitação só inicia a operação de atualização do cache. Quando a atualização do cache termina, não significa necessariamente que o arquivo de atualização esteja concluída. Para saber se a operação de atualização do arquivo foi concluída antes de verificar se há novos arquivos no compartilhamento de arquivos do gateway, use a notificação refresh-complete. Para fazer isso, você pode se inscrever para ser notificado por meio de um CloudWatch evento da Amazon. Para obter mais informações, consulte Receber notificações sobre operações de arquivos.