Aggiornamento di oggetti nel bucket Amazon S3 - AWSStorage Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento di oggetti nel bucket Amazon S3

Mentre il client NFS o SMB esegue le operazioni del file system, il gateway gestisce un inventario degli oggetti nel bucket S3 associati alla condivisione file. Il gateway usa questo inventario memorizzato nella cache per ridurre la latenza e la frequenza delle richieste S3. Questa operazione non importa i file nell'archivio cache di S3 File Gateway. Aggiorna solo l'inventario memorizzato nella cache per riflettere le modifiche nell'inventario degli oggetti nel bucket S3.

Per aggiornare il bucket S3 per la condivisione file, è possibile usare la console Storage Gateway, laRefreshCacheoperazione nell'API Storage Gateway o inAWS Lambdafunzione.

Per aggiornare gli oggetti in un bucket S3 dalla console
  1. Aprire la console Storage Gateway suhttps://console.aws.amazon.com/storagegateway/home.

  2. Scegliere File shares (Condivisioni di file) e quindi scegliere la condivisione file associata al bucket S3 da aggiornare.

  3. Per Actions (Operazioni), scegliere Refresh cache (Aggiorna cache).

    Il tempo richiesto dal processo di aggiornamento dipende dal numero di oggetti memorizzati nella cache del gateway e dal numero di oggetti che sono stati aggiunti o rimossi dal bucket S3.

Per aggiornare gli oggetti in un bucket S3 utilizzando unAWS Lambdafunzione
  1. Identificare il bucket S3 utilizzato da S3 File Gateway.

  2. Controlla che ilEventoLa sezione è vuota. Si compila automaticamente in un secondo momento.

  3. Crea un ruolo IAM e consenti di Trust Relationship per Lambdalambda.amazonaws.com.

  4. Utilizzare la policy seguente.

    { "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. Creazione di una funzione Lambda dalla console Lambda.

  6. Utilizzare la seguente funzione per l'attività 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. PerRuolo di esecuzione, scegliere il ruolo IAM creato.

  8. Facoltativo: aggiungi un trigger per Amazon S3 e seleziona l'eventoObjectCreatedoObjectRemoved.

    Nota

    RefreshCachedeve completare un processo prima di iniziare un altro. Quando crei o elimini molti oggetti in un bucket, le prestazioni potrebbero peggiorare. Pertanto, si consiglia di non utilizzare i trigger S3. Invece, usa la regola Amazon CloudWatch descritta di seguito.

  9. Crea una regola CloudWatch sulla console CloudWatch e aggiungi una pianificazione. In generale, raccomandiamo untariffa fissaDi 30 minuti. Tuttavia, è possibile utilizzare 1-2 ore su un grande secchio S3.

  10. Aggiungi un nuovo trigger per gli eventi CloudWatch e scegli la regola appena creata.

  11. Salva la tua configurazione Lambda. Scegli Test (Esegui test).

  12. ScegliereS3 METTEREe personalizza il test in base alle tue esigenze.

  13. Il test dovrebbe avere successo. In caso contrario, modificare il JSON in base alle proprie esigenze e ripetere il test.

  14. Apri la console Amazon S3 e verifica che l'evento creato e la funzione Lambda ARN siano presenti.

  15. Caricamento di un oggetto nel bucket S3 tramite la console Amazon S3 o ilAWS CLI.

    La console CloudWatch genera un output CloudWatch simile al seguente.

    { 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'invocazione Lambda offre un output simile a quello riportato di seguito.

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

    La tua condivisione NFS montata sul tuo client rifletterà questo aggiornamento.

    Nota

    Per le cache che aggiornano la creazione o l'eliminazione di oggetti di grandi dimensioni in bucket di grandi dimensioni con milioni di oggetti, gli aggiornamenti potrebbero richiedere ore.

  16. Eliminazione manuale dell'oggetto utilizzando la console Amazon S3 oAWS CLI.

  17. Visualizza la condivisione NFS montata sul tuo client. Verifica che il tuo oggetto non sia andato (perché la cache è stata aggiornata).

  18. Controlla i registri di CloudWatch per vedere il registro della tua eliminazione con l'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

    Per i lavori cron o le attività pianificate, il tuo evento di log di CloudWatch èu'detail-type': u'Scheduled Event'.

L'aggiornamento della cache avvia solo l'operazione di aggiornamento. Quando l'aggiornamento della cache termina, non significa necessariamente l'aggiornamento dei file sia stato completato. Per stabilire se l'operazione di aggiornamento dei file sia completa prima di verificare la presenza di nuovi file sulla condivisione file del gateway, utilizzare la notifica refresh-complete. Per farlo, puoi abbonarti per ricevere una notifica tramite un evento Amazon CloudWatch quando ilRefreshCacheoperazione completata. Per ulteriori informazioni, consultare Ricevere notifiche sulle operazioni di file.