Refrescar objetos en el bucket de Amazon S3 - AWSStorage Gateway

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Refrescar objetos en el bucket de Amazon S3

Mientras el cliente de NFS o SMB realiza operaciones en el sistema de archivos, la gateway mantiene un inventario de los objetos contenidos en el bucket de S3 asociados al recurso compartido de archivos. La gateway utiliza este inventario en caché para reducir la latencia y frecuencia de las solicitudes de S3. Esta operación no importa archivos al almacenamiento de caché de S3 File Gateway. Solo actualiza el inventario almacenado en caché para reflejar los cambios en el inventario de los objetos del bucket de S3.

Para actualizar el bucket de S3 del recurso compartido de archivos, puede utilizar la consola de Storage Gateway, laRefreshCacheen la API de Storage Gateway o unAWS Lambdafunción.

Para actualizar objetos en un bucket de S3 desde la consola
  1. Abrir la consola de Storage Gateway enhttps://console.aws.amazon.com/storagegateway/home.

  2. Elija File shares (Recursos compartidos de archivos) y, a continuación, elija el recurso compartido de archivos asociado al bucket de S3 que desea actualizar.

  3. En Actions (Acciones), elija Refresh cache (Actualizar caché).

    El tiempo que tarda el proceso de actualización depende del número de objetos almacenados en la memoria caché de la gateway y del número de objetos que se han añadido o eliminado del bucket de S3.

Para actualizar objetos en un bucket de S3 mediante unAWS Lambdafunción
  1. Identifique el bucket de S3 utilizado por S3 File Gateway.

  2. Compruebe que lasEventoestá en blanco. Se rellena automáticamente más tarde.

  3. Crear un rol de IAM y permitir la relación de confianza para Lambdalambda.amazonaws.com.

  4. Utilice la siguiente política de.

    { "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. Cree una función Lambda desde la consola de Lambda.

  6. Utilice la siguiente función para la tarea 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. ParaRol de ejecución, elija el rol de IAM que creó.

  8. Opcional: agregue un activador para Amazon S3 y seleccione el eventoObjectCreatedoObjectRemoved.

    nota

    RefreshCachenecesita completar un proceso antes de iniciar otro. Al crear o eliminar muchos objetos de un depósito, el rendimiento podría degradarse. Por lo tanto, recomendamos no utilizar activadores de S3. En su lugar, utilice la regla de Amazon CloudWatch descrita a continuación.

  9. Cree una regla de CloudWatch en la consola de CloudWatch y agregue una programación. En general, recomendamos unTipo fijode 30 minutos. Sin embargo, puede usar de 1 a 2 horas en un cubo S3 grande.

  10. Agregue un nuevo activador para eventos de CloudWatch y elija la regla que acaba de crear.

  11. Guarde la configuración de Lambda. Seleccione Test (Probar).

  12. ElegirS3 PUTy personaliza la prueba según tus necesidades.

  13. La prueba debería realizarse correctamente. Si no, modifique el JSON según sus requisitos y vuelva a realizar la prueba.

  14. Abra la consola de Amazon S3 y compruebe que el evento que creó y el ARN de la función Lambda están presentes.

  15. Cargue un objeto en el bucket de S3 utilizando la consola de Amazon S3 o laAWS CLI.

    La consola de CloudWatch genera un resultado de CloudWatch similar al siguiente.

    { 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'} ] }

    La invocación Lambda proporciona un resultado similar al siguiente.

    { 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' } } }

    El recurso compartido de NFS montado en su cliente reflejará esta actualización.

    nota

    En el caso de las memorias caché que actualizan la creación o eliminación de objetos grandes en depósitos grandes con millones de objetos, las actualizaciones pueden tardar horas.

  16. Elimine el objeto manualmente mediante la consola de Amazon S3 oAWS CLI.

  17. Vea el recurso compartido de NFS montado en su cliente. Compruebe que el objeto ha desaparecido (porque la caché se ha actualizado).

  18. Compruebe los registros de CloudWatch para ver el registro de su eliminación con el 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 trabajos cron o tareas programadas, el evento de registro de CloudWatch esu'detail-type': u'Scheduled Event'.

Al actualizar la memoria caché solo se inicia la operación de actualización. El hecho de que finalice la actualización de la caché no significa necesariamente que haya finalizado la actualización del archivo. Para determinar que la operación de actualización archivos ha finalizado antes de comprobar si hay archivos nuevos en el recurso compartido de archivos de la gateway, utilice la notificación refresh-complete. Para ello, puede suscribirse para que se le envíen notificaciones a través de un evento de Amazon CloudWatch cuando suRefreshCachese completa la operación. Para obtener más información, consulte Cómo recibir notificaciones de las operaciones de archivos.