Atualizar 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á.

Atualizar o cache de objetos do bucket do Amazon S3

À medida que seu cliente NFS ou SMB executa operações no sistema de arquivos, o gateway mantém um inventário dos objetos no cache de objetos do Amazon S3 associado ao compartilhamento de arquivos. O gateway usa esse inventário armazenado 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 Gateway de Arquivos do S3. Ela atualiza apenas o inventário armazenado em cache para refletir as alterações no inventário dos objetos que estão no cache do bucket do Amazon S3.

Para atualizar o cache de objetos do bucket do S3 para o 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 nele.

Configurar um cronograma de atualização automática do cache usando o console do Storage Gateway

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

  • O TTL é medido como o intervalo desde a última atualização do cache para determinado diretório.

  • A atualização do cache baseada em TTL ocorre somente quando determinado diretório é acessado após a expiração do período de 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ó são sincronizados se forem acessados por atividade NFS ou SMB.

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

  • A configuração da atualização do 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 maior período de TTL que for prático para sua implantação.

Como configurar um cronograma de atualização automática 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.

  3. Escolha o compartilhamento de arquivos para o qual deseja configurar o cronograma de atualização.

  4. Em Actions, escolha Edit file share settings.

  5. Em Atualização automática do cache do S3 depois de, marque a caixa de seleção e defina o tempo em dias, horas e minutos para atualizar o cache do compartilhamento de arquivos usando tempo de vida (TTL). TTL é o intervalo desde a última atualização após a qual o acesso ao diretório fará com que o Gateway de Arquivos atualize o conteúdo desse diretório pela primeira vez no 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 do S3 usado pelo Gateway de Arquivos do S3.

  2. Verifique se a seção Evento está em branco. Ela será preenchida automaticamente mais tarde.

  3. Crie um perfil do IAM e permita a relação de confiança para o Lambda lambda.amazonaws.com.

  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 do Lambda usando o console do 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 Perfil de execução, escolha o perfil do IAM que você criou.

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

    nota

    RefreshCache precisa concluir um processo antes de iniciar outro. Quando você cria ou exclui muitos objetos em um bucket, o desempenho pode cair. 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. Em geral, recomendamos uma frequência fixa de 30 minutos. No entanto, você pode usar de 1 a 2 horas em um grande bucket do S3.

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

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

  12. Escolha S3 PUT e personalize o teste de acordo com seus requisitos.

  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 do Lambda estão presentes.

  15. Faça upload de um objeto para o seu bucket do S3 usando o console do Amazon S3 ou a 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' } } }

    O 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 o objeto manualmente usando o console do Amazon S3 ou a AWS CLI.

  17. Visualize o compartilhamento NFS montado em seu cliente. Verifique se o objeto sumiu (porque o 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'.

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

Como executar 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 selecione o compartilhamento para o qual deseja executar 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.

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

O procedimento a seguir executa uma atualização manual do cache usando a API do Storage Gateway. Antes de executar 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 gera custos de API do Amazon S3 somente em relação aos diretórios que você envia como argumentos na solicitação e, se você especificar uma atualização recursiva, aos descendentes desses diretórios.

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

    • As operações de 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 de cache utiliza recursos de hardware virtual do gateway, o desempenho do gateway pode ser afetado negativamente enquanto a atualização está em andamento.

  • Executar a atualização do 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 em que está atualizando o conteúdo do Amazon S3 fora do fluxo de trabalho do gateway, recomendamos especificar esses diretórios na solicitação de atualização baseada em API para reduzir os custos de API do Amazon S3 e o impacto no desempenho do gateway.

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

    nota

    O envio da solicitação RefreshCache apenas 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ção sobre operações de arquivo.