Actualisation du cache d'objets du compartiment Amazon S3 - AWS Storage Gateway

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Actualisation du cache d'objets du compartiment Amazon S3

Lorsque votre client NFS ou SMB effectue des opérations sur le système de fichiers, votre passerelle tient à jour un inventaire des objets du cache d'objets Amazon S3 associé à votre partage de fichiers. Votre passerelle utilise cet inventaire mis en cache pour réduire la latence et la fréquence des demandes Amazon S3. Cette opération n'importe pas de fichiers dans le stockage cache de S3 File Gateway. Il met uniquement à jour l'inventaire mis en cache pour refléter les modifications apportées à l'inventaire des objets dans le cache d'objets Amazon S3.

Pour actualiser le cache d'objets du compartiment S3 pour votre partage de fichiers, sélectionnez la méthode la mieux adaptée à votre cas d'utilisation dans la liste suivante, puis suivez la procédure correspondante ci-dessous.

Note

Quelle que soit la méthode utilisée, le fait de répertorier un répertoire pour la première fois l'initialise, ce qui amène la passerelle à répertorier le contenu des métadonnées du répertoire provenant d'Amazon S3. Le temps nécessaire à l'initialisation d'un répertoire est proportionnel au nombre d'entrées qu'il contient.

Configuration d'un programme d'actualisation automatique du cache à l'aide de la console Storage Gateway

La procédure suivante configure un programme d'actualisation automatique du cache basé sur une valeur TTL (Time To Live) que vous spécifiez. Avant de configurer un programme d'actualisation du cache basé sur le protocole TTL, tenez compte des points suivants :

  • Le TTL est mesuré comme le temps écoulé depuis la dernière actualisation du cache pour un répertoire donné.

  • L'actualisation du cache basée sur le protocole TTL se produit uniquement lorsqu'un répertoire donné est consulté après l'expiration de la période TTL spécifiée.

  • L'actualisation n'est pas récursive. Cela se produit uniquement sur les répertoires spécifiques auxquels vous accédez.

  • L'actualisation entraîne des coûts liés à l'API Amazon S3 uniquement pour les annuaires qui n'ont pas été synchronisés depuis l'expiration du TTL.

    • Les annuaires ne sont synchronisés que s'ils sont accessibles par le biais d'une activité NFS ou SMB.

    • La synchronisation ne se produit pas plus fréquemment que la période TTL que vous spécifiez.

  • La configuration de l'actualisation du cache basée sur le protocole TTL n'est recommandée que si vous mettez fréquemment à jour le contenu de votre compartiment Amazon S3 directement, en dehors du flux de travail entre la passerelle et le compartiment Amazon S3.

  • Les opérations NFS et SMB qui accèdent aux annuaires ayant expiré TTLs seront bloquées pendant que la passerelle actualise le contenu du répertoire.

    Note

    L'actualisation du cache pouvant bloquer les opérations d'accès aux répertoires, nous vous recommandons de configurer la période TTL la plus longue possible pour votre déploiement.

Pour configurer un calendrier d'actualisation automatique du cache à l'aide de la console Storage Gateway
  1. Ouvrez la console Storage Gateway à la https://console.aws.amazon.com/storagegateway/maison.

  2. Choisissez Partage de fichiers.

  3. Choisissez le partage de fichiers pour lequel vous souhaitez configurer le calendrier d'actualisation.

  4. Pour Actions, choisissez Modifier les paramètres de partage de fichiers.

  5. Pour actualiser automatiquement le cache depuis S3 après, cochez la case et définissez le délai en jours, heures et minutes pour actualiser le cache du partage de fichiers à l'aide de Time To Live (TTL). Le TTL est la durée écoulée depuis la dernière actualisation après laquelle l'accès au répertoire obligerait la passerelle de fichiers à actualiser le contenu de ce répertoire pour la première fois à partir du compartiment Amazon S3.

  6. Sélectionnez Enregistrer les modifications.

Configurer un calendrier d'actualisation automatique du cache à l' AWS Lambda aide d'une CloudWatch règle Amazon

Pour configurer un calendrier d'actualisation automatique du cache à l' AWS Lambda aide d'une CloudWatch règle Amazon
  1. Identifiez le compartiment S3 utilisé par la passerelle de fichiers S3.

  2. Vérifiez que la section Événement est vide. Il sera automatiquement renseigné ultérieurement.

  3. Créez un rôle IAM et autorisez une relation de confiance pour Lambdalambda.amazonaws.com.

  4. Appliquez la politique suivante.

    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. Créez une fonction Lambda à partir de la console Lambda.

  6. Utilisez la fonction suivante pour votre tâche 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. Pour Rôle d'exécution, choisissez le rôle IAM que vous avez créé.

  8. Facultatif : ajoutez un déclencheur pour Amazon S3 et sélectionnez l'événement ObjectCreatedou ObjectRemoved.

    Note

    RefreshCachedoit terminer un processus avant d'en démarrer un autre. Lorsque vous créez ou supprimez de nombreux objets dans un bucket, les performances peuvent se dégrader. Par conséquent, nous vous déconseillons d'utiliser des déclencheurs S3. Utilisez plutôt la CloudWatch règle Amazon décrite ci-dessous.

  9. Créez une CloudWatch règle sur la CloudWatch console et ajoutez un calendrier. En général, nous recommandons un tarif fixe de 30 minutes. Toutefois, vous pouvez utiliser 1 à 2 heures sur un compartiment S3 de grande taille.

  10. Ajoutez un nouveau déclencheur pour les CloudWatch événements et choisissez la règle que vous venez de créer.

  11. Enregistrez votre configuration Lambda. Sélectionnez Tester).

  12. Choisissez S3 PUT et personnalisez le test selon vos besoins.

  13. Le test devrait réussir. Si ce n'est pas le cas, modifiez le JSON selon vos besoins et testez à nouveau.

  14. Ouvrez la console Amazon S3 et vérifiez que l'événement que vous avez créé et l'ARN de la fonction Lambda sont présents.

  15. Téléchargez un objet dans votre compartiment S3 à l'aide de la console Amazon S3 ou du AWS CLI.

    La CloudWatch console génère une CloudWatch sortie similaire à la suivante.

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

    L'invocation Lambda vous donne un résultat similaire à ce qui suit.

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

    Votre partage NFS monté sur votre client reflétera cette mise à jour.

    Note

    Pour les caches mettant à jour la création ou la suppression d'objets volumineux dans de grands compartiments contenant des millions d'objets, les mises à jour peuvent prendre des heures.

  16. Supprimez votre objet manuellement à l'aide de la console Amazon S3 ou AWS CLI.

  17. Affichez le partage NFS installé sur votre client. Vérifiez que votre objet a disparu (parce que votre cache a été actualisé).

  18. Consultez vos CloudWatch journaux pour voir le journal de votre suppression associée à l'événementObjectRemoved: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'] }
    Note

    Pour les tâches cron ou les tâches planifiées, votre événement de CloudWatch journal estu'detail-type': u'Scheduled Event'.

Effectuez une actualisation manuelle du cache à l'aide de la console Storage Gateway

Pour actualiser manuellement le cache à l'aide de la console Storage Gateway
  1. Ouvrez la console Storage Gateway à la https://console.aws.amazon.com/storagegateway/maison.

  2. Choisissez Partage de fichiers, puis choisissez le partage de fichiers pour lequel vous souhaitez effectuer l'actualisation.

  3. Pour Actions, sélectionnez Actualiser le cache.

    La durée du processus d'actualisation dépend du nombre d'objets mis en cache sur la passerelle et du nombre d'objets qui ont été ajoutés au compartiment S3 ou supprimés de celui-ci.

Effectuez une actualisation manuelle du cache à l'aide de l'API Storage Gateway

La procédure suivante permet d'actualiser manuellement le cache à l'aide de l'API Storage Gateway. Avant de procéder à une actualisation du cache basée sur une API, tenez compte des points suivants :

  • Vous pouvez spécifier une actualisation récursive ou non récursive.

  • Une actualisation récursive est plus gourmande en ressources et plus coûteuse.

  • L'actualisation entraîne des coûts liés à l'API Amazon S3 uniquement pour les répertoires que vous transmettez en tant qu'arguments dans la demande, et pour les descendants de ces répertoires si vous spécifiez une actualisation récursive.

  • L'actualisation s'exécute simultanément avec d'autres opérations lorsque la passerelle est en cours d'utilisation.

    • Les opérations NFS et SMB ne sont généralement pas bloquées pendant les actualisations, sauf si une actualisation est active pour le répertoire auquel l'opération accède.

    • La passerelle n'est pas en mesure de déterminer si le contenu actuel du cache est périmé et utilise son contenu actuel pour les opérations NFS et SMB, qu'il soit actualisé ou non.

    • Dans la mesure où l'actualisation du cache utilise les ressources matérielles virtuelles de la passerelle, les performances de la passerelle peuvent être affectées négativement pendant l'actualisation.

  • L'actualisation du cache basée sur une API est recommandée uniquement si vous mettez à jour le contenu de votre compartiment Amazon S3 directement, en dehors du flux de travail entre la passerelle et le compartiment Amazon S3.

    Note

    Si vous connaissez les répertoires spécifiques dans lesquels vous mettez à jour le contenu Amazon S3 en dehors du flux de travail de la passerelle, nous vous recommandons de spécifier ces répertoires dans votre demande d'actualisation basée sur l'API afin de réduire les coûts de l'API Amazon S3 et l'impact sur les performances de la passerelle.

Pour actualiser manuellement le cache à l'aide de l'API Storage Gateway
  • Envoyez une requête HTTP POST pour appeler l'RefreshCacheopération avec les paramètres souhaités via l'API Storage Gateway. Pour plus d'informations, consultez RefreshCachele manuel AWS Storage Gateway API Reference.

    Note

    L'envoi de la RefreshCache demande ne fait que lancer l'opération d'actualisation du cache. Lorsque l'actualisation du cache est terminée, cela ne signifie pas nécessairement que l'actualisation du fichier est terminée. Pour déterminer si l'opération d'actualisation du fichier est terminée avant de rechercher de nouveaux fichiers sur le partage de fichiers de la passerelle, utilisez la notification refresh-complete. Pour ce faire, vous pouvez vous abonner pour être averti par le biais d'un CloudWatch événement Amazon. Pour de plus amples informations, veuillez consulter Être informé des opérations sur les fichiers.