Actualisation des objets dans votre compartiment Amazon S3 - AWSStorage 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 des objets dans votre compartiment Amazon S3

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

Pour actualiser le compartiment S3 pour votre partage de fichiers, vous pouvez utiliser la console Storage Gateway, laRefreshCachedans l'API Storage Gateway, ou dans unAWS Lambda.

Pour actualiser les objets d'un compartiment S3 à partir de la console
  1. Ouvrez la console Storage Gateway surhttps://console.aws.amazon.com/storagegateway/home.

  2. Choisissez Partages de fichiers, puis le partage de fichiers associé au compartiment S3 que vous souhaitez actualiser.

  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.

Pour actualiser des objets dans un compartiment S3 à l'aide d'unAWS Lambdafonction
  1. Identifiez le compartiment S3 utilisé par la passerelle de fichiers S3.

  2. Vérifiez que leEvénementest vide. Il se remplit automatiquement ultérieurement.

  3. Créer un rôle IAM et autoriser la relation de confiance pour Lambdalambda.amazonaws.com.

  4. Utilisez la stratégie suivante.

    { "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:672406774878:share/share-E51FBD9C' ) print(response) return 'Your FileShare cache has been refreshed'
  7. PourRô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énementObjectCreatedouObjectRemoved.

    Note

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

  9. Créez une règle CloudWatch sur la console CloudWatch et ajoutez une planification. En général, nous recommandons unfixeDe 30 minutes. Cependant, vous pouvez utiliser 1 à 2 heures sur un grand compartiment S3.

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

  11. Enregistrez votre configuration Lambda. Choisissez Test.

  12. ChoisissezS3 MISet personnalisez le test selon vos besoins.

  13. Le test doit réussir. Si ce n'est pas le cas, modifiez le JSON en fonction de vos besoins et retestez.

  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. Charger un objet dans le compartiment S3 à l'aide de la console Amazon S3 ou de laAWS CLI.

    La console CloudWatch génère une sortie CloudWatch similaire à la sortie 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:::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'} ] }

    L'invocation Lambda vous donne des résultats similaires à 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 qui mettent à 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 ouAWS CLI.

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

  18. Vérifiez vos journaux CloudWatch pour voir le journal de votre suppression avec 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 CloudWatch log estu'detail-type': u'Scheduled Event'.

L'actualisation du cache ne faut que lancer l'opération d'actualisation. 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 cela, vous pouvez vous abonner à la réception d'une notification via un événement Amazon CloudWatch lorsque votreRefreshCachel'opération est terminée. Pour plus d'informations, consultez Réception de notifications sur les opérations de fichiers.