Atualizar objetos no bucket do Amazon S3 - AWSStorage 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 objetos no bucket do Amazon S3

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

Para atualizar o bucket do S3 para o compartilhamento de arquivos, você pode usar o console do Storage Gateway, oRefreshCacheoperação na Storage Gateway API ou em umAWS Lambdafunção.

Para atualizar objetos em um bucket do S3 a partir do console
  1. Abra o console do Storage Gatewayhttps://console.aws.amazon.com/storagegateway/home.

  2. Escolha File shares e, em seguida, o compartilhamento de arquivos associado ao bucket do S3 que você deseja atualizar.

  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.

Como atualizar objetos em um bucket do S3 usando umAWS Lambdafunção
  1. Identifique o bucket do S3 usado pelo S3 File Gateway.

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

  3. Crie uma função do IAM e permita Relacionamento de confiança para o Lambdalambda.amazonaws.com.

  4. Use a seguinte política.

    { "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 a partir do console do Lambda.

  6. Use a seguinte função 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:672406774878:share/share-E51FBD9C' ) print(response) return 'Your FileShare cache has been refreshed'
  7. para oFunção de execução, escolha a função do IAM criada por você.

  8. Opcional: adicione um gatilho para o Amazon S3 e selecione o eventoObjectCreatedouObjectRemoved.

    nota

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

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

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

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

  12. SelecioneS3 COLOCARe personalize o teste de acordo com suas necessidades.

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

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

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

    O console do CloudWatch gera uma saída do CloudWatch 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:::MY-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 intervalos grandes com milhões de objetos, as atualizações podem levar horas.

  16. Excluir seu objeto manualmente usando o console do Amazon S3 ouAWS CLI.

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

  18. Verifique seus registros do CloudWatch 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 trabalhos cron ou tarefas agendadas, seu evento de log do CloudWatch éu'detail-type': u'Scheduled Event'.

A atualização do cache apenas inicia a operação de atualização. 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, inscreva-se para ser notificado por meio de um evento do Amazon CloudWatch quando seuRefreshCachea operação é concluída. Para obter mais informações, consulte Receber notificação sobre operações de arquivo.