Actualización de la caché de objetos del bucket de Amazon S3 - AWS Storage 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.

Actualización de la caché de objetos del bucket de Amazon S3

Mientras el cliente de NFS o SMB realiza operaciones en el sistema de archivos, la puerta de enlace mantiene un inventario de los objetos almacenados en la caché de objetos de Amazon S3 asociado al recurso compartido de archivos. La puerta de enlace utiliza este inventario en caché para reducir la latencia y frecuencia de las solicitudes de Amazon S3. Esta operación no importa archivos al almacenamiento en caché de la puerta de enlace de archivo de S3. Solo actualiza el inventario en caché para reflejar los cambios en el inventario de los objetos en la caché de objetos de Amazon S3.

Para actualizar la caché de objetos del bucket de S3 del recurso compartido de archivos, seleccione el método que mejor se adapte al caso de uso de la siguiente lista y, a continuación, complete el procedimiento correspondiente que se indica a continuación.

nota

Independientemente del método que utilice, al presentar un directorio por primera vez, se inicializa, lo que provoca que la puerta de enlace muestre el contenido de metadatos del directorio desde Amazon S3. El tiempo necesario para inicializar un directorio es proporcional al número de entradas de ese directorio.

Configurar un programa de actualización automática de la caché mediante la consola de Storage Gateway

El siguiente procedimiento configura un programa de actualización automática de la caché en función del valor de tiempo de vida (TTL) que especifique. Antes de configurar un programa de actualización de la caché basado en TTL, tenga en cuenta lo siguiente:

  • El TTL se mide como el tiempo transcurrido desde la última actualización de la caché de un directorio determinado.

  • La actualización de la caché basada en TTL solo se produce cuando se accede a un directorio determinado después de que haya expirado el período TTL especificado.

  • La actualización no es recursiva. Solo se produce en los directorios específicos a los que se accede.

  • La actualización implica costes de la API de Amazon S3 únicamente en los directorios que no se han sincronizado desde la expiración del TTL.

    • Los directorios solo se sincronizan si se accede a ellos mediante una actividad de NFS o SMB.

    • La sincronización no se produce con más frecuencia que el período TTL que especifique.

  • Se recomienda configurar la actualización de la caché basada en TTL solo si actualiza con frecuencia el contenido del bucket de Amazon S3 directamente, fuera del flujo de trabajo entre la puerta de enlace y el bucket de Amazon S3.

  • Las operaciones NFS y SMB que accedan a directorios caducados se TTLs bloquearán mientras la puerta de enlace actualiza el contenido del directorio.

    nota

    Dado que la actualización de la caché puede bloquear las operaciones de acceso a los directorios, recomendamos configurar el período TTL más largo que resulte práctico para la implementación.

Para configurar un programa de actualización automática de la caché mediante la consola de Storage Gateway
  1. Abra la consola Storage Gateway en https://console.aws.amazon.com/storagegateway/casa.

  2. Elija Recursos compartidos de archivos.

  3. Elija el recurso compartido de archivos para el que desea configurar el programa de actualización.

  4. En Actions, elija Edit file share settings.

  5. En Actualización automática de la caché desde S3, marque la casilla de verificación y configure el tiempo en días, horas y minutos para actualizar la caché del recurso compartido de archivos mediante el tiempo de vida (TTL). TTL es el tiempo transcurrido desde la última actualización tras la cual el acceso al directorio haría que la puerta de enlace de archivo actualice primero el contenido de ese directorio desde el bucket de Amazon S3.

  6. Seleccione Save changes (Guardar cambios).

Configura un programa de actualización de caché automático AWS Lambda con una CloudWatch regla de Amazon

Para configurar un programa de actualización de caché automático AWS Lambda mediante una CloudWatch regla de Amazon
  1. Identifique el bucket de S3 utilizado por la puerta de enlace de archivo de S3.

  2. Compruebe que la sección de Evento esté en blanco. Se rellena automáticamente más adelante.

  3. Cree un rol de IAM y permita una relación de confianza para lambda.amazonaws.com de Lambda.

  4. Añada la política siguiente.

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

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

  8. Opcional: añada un activador para Amazon S3 y seleccione el evento ObjectCreatedo ObjectRemoved.

    nota

    RefreshCache debe completar un proceso antes de iniciar otro. Al crear o eliminar muchos objetos de un bucket, es posible que el rendimiento disminuya. Por lo tanto, no se recomienda utilizar activadores de S3. En su lugar, usa la CloudWatch regla de Amazon que se describe a continuación.

  9. Crea una CloudWatch regla en la CloudWatch consola y añade un horario. Por lo general, recomendamos un intervalo fijo de 30 minutos. Sin embargo, puede utilizar de 1 a 2 horas en un bucket de S3 grande.

  10. Añada un nuevo desencadenante para CloudWatch los eventos y elija la regla que acaba de crear.

  11. Guarde la configuración de Lambda. Seleccione Probar

  12. Elija S3 PUT y personalice la prueba según sus requisitos.

  13. La prueba debería funcionar. De lo contrario, 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 de Lambda estén presentes.

  15. Cargue un objeto en el bucket de S3 fuente mediante la consola de S3 o la AWS CLI.

    La CloudWatch consola genera un CloudWatch resultado 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:::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'} ] }

    La invocación de Lambda proporciona una salida similar a la 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 el cliente reflejará esta actualización.

    nota

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

  16. Elimine el objeto con la consola de Amazon S3 o la AWS CLI de manera manual.

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

  18. Revisa tus CloudWatch registros para ver el registro de tu eliminación junto 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

    En el caso de los trabajos temporales o las tareas programadas, tu evento de CloudWatch registro esu'detail-type': u'Scheduled Event'.

Realizar una actualización manual de caché mediante la consola de Storage Gateway

Para realizar una actualización manual de la caché mediante la consola de Storage Gateway
  1. Abra la consola Storage Gateway en https://console.aws.amazon.com/storagegateway/casa.

  2. Seleccione Recursos compartidos de archivos y, a continuación, elija el recurso compartido de archivos para el que desee realizar la actualización.

  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.

Realizar una actualización manual de la caché mediante la API de Storage Gateway

El siguiente procedimiento lleva a cabo una actualización manual de la caché mediante la API de Storage Gateway. Antes de realizar una actualización de la caché basada en API, tenga en cuenta lo siguiente:

  • Puede especificar una actualización recursiva o no recursiva.

  • Una actualización recursiva consume más recursos y es más cara.

  • La actualización incurre en costes de la API de Amazon S3 únicamente en los directorios que se pasen como argumentos en la solicitud y en los descendientes de esos directorios si se especifica una actualización recursiva.

  • La actualización se ejecuta simultáneamente con otras operaciones mientras la puerta de enlace está en uso.

    • Por lo general, las operaciones de NFS y SMB no se bloquean durante las actualizaciones, a menos que haya una actualización activa para el directorio al que se accede mediante la operación.

    • La puerta de enlace no puede determinar si el contenido actual de la caché está obsoleto y lo utiliza para las operaciones de NFS y SMB, independientemente de si está actualizado.

    • Dado que una actualización de la caché utiliza recursos de hardware virtual de la puerta de enlace, el rendimiento de la puerta de enlace podría verse afectado negativamente mientras la actualización esté en curso.

  • Se recomienda realizar una actualización de la caché basada en API solo si actualiza el contenido del bucket de Amazon S3 directamente, fuera del flujo de trabajo entre la puerta de enlace y el bucket de Amazon S3.

    nota

    Si se conocen los directorios específicos en los que va a actualizar el contenido de Amazon S3 fuera del flujo de trabajo de la puerta de enlace, se recomienda especificar estos directorios en la solicitud de actualización basada en API para reducir los costes de la API de Amazon S3 y el impacto en el rendimiento de la puerta de enlace.

Para realizar una actualización manual de la caché mediante la API de Storage Gateway
  • Envíe una solicitud HTTP POST para invocar la operación RefreshCache con los parámetros que desee a través de la API de Storage Gateway. Para obtener más información, consulte la referencia RefreshCachede la API AWS de Storage Gateway.

    nota

    Al enviar la solicitud RefreshCache solo se inicia la operación de actualización de la caché. 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, puedes suscribirte para recibir notificaciones a través de un CloudWatch evento de Amazon. Para obtener más información, consulte Recepción de notificaciones sobre las operaciones de archivos.