Aktualisieren von Objekten in Ihrem Amazon S3 S3-Bucket - AWSStorage Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktualisieren von Objekten in Ihrem Amazon S3 S3-Bucket

Wenn der NFS- oder SMB-Client Dateisystemvorgänge ausführt, pflegt das Gateway ein Verzeichnis der Objekte im S3-Bucket, das mit der Dateifreigabe verknüpft ist. Ihr Gateway verwendet dieses Verzeichnis im Cache, um die Latenz und Häufigkeit der S3-Anforderungen zu reduzieren. Dieser Vorgang importiert keine Dateien in den Cache-Speicher des S3 File Gateways. Es aktualisiert nur das zwischengespeicherte Inventar, um Änderungen im Inventar der Objekte im S3-Bucket widerzuspiegeln.

Zum Aktualisieren des S3-Buckets für Ihre Dateifreigabe können Sie die Storage Gateway Gateway-Konsole verwenden, dieRefreshCacheBetrieb in der Storage Gateway Gateway-API oder einemAWS LambdaFunktion.

So aktualisieren Sie Objekte in einem S3-Bucket über die Konsole
  1. Öffnen Sie die Storage Gateway Gateway-Konsolehttps://console.aws.amazon.com/storagegateway/homeaus.

  2. Wählen Sie File shares (Dateifreigaben) und wählen Sie dann die Dateifreigabe, die mit dem zu aktualisierenden S3-Bucket verknüpft ist.

  3. Wählen Sie für Actions (Aktionen)die Option Refresh cache (Cache aktualisieren).

    Die Dauer des Aktualisierungsprozesses hängt von der Anzahl der Objekte ab, die im Gateway zwischengespeichert sind, sowie von der Anzahl der Objekte, die dem S3-Bucket hinzugefügt oder aus ihm entfernt wurden.

So aktualisieren Sie Objekte in einem S3-Bucket mit einemAWS Lambdawirken
  1. Identifizieren Sie den S3-Bucket, der vom S3 File Gateway verwendet wird.

  2. Überprüfen Sie, dass derEreignis-Abschnitt ist leer. Es füllt sich später automatisch aus.

  3. Erstellen Sie eine IAM-Rolle und erlauben Sie Trust Relationship for Lambdalambda.amazonaws.com.rproxy.goskope.comaus.

  4. Verwenden Sie die folgende Richtlinie.

    { "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. Erstellen Sie eine Lambda-Funktion von der Lambda-Konsole aus.

  6. Verwenden Sie die folgende Funktion für Ihre Lambda-Aufgabe.

    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. FürAusführungsrolleWählen Sie die IAM-Rolle aus, die Sie erstellt haben.

  8. Optional: Fügen Sie einen Trigger für Amazon S3 hinzu und wählen Sie das EreignisObjectCreatedoderObjectRemovedaus.

    Anmerkung

    RefreshCachemuss einen Prozess abschließen, bevor Sie einen anderen starten. Wenn Sie viele Objekte in einem Bucket erstellen oder löschen, kann sich die Leistung verschlechtern. Daher empfehlen wir, S3-Trigger zu verwenden. Verwenden Sie stattdessen die im Folgenden beschriebene Amazon CloudWatch CloudWatch-Regel.

  9. Erstellen Sie eine CloudWatch-Regel in der CloudWatch-Konsole und fügen Sie einen Zeitplan hinzu. Im Allgemeinen empfehlen wir eineFestzinssatzVon 30 Minuten. Sie können jedoch 1-2 Stunden für einen großen S3-Eimer verwenden.

  10. Fügen Sie einen neuen Trigger für CloudWatch-Ereignisse hinzu und wählen Sie die Regel aus, die Sie gerade erstellt haben.

  11. Speichern Sie Ihre Lambda-Konfiguration. Wählen Sie Test aus.

  12. Klicken Sie aufS3 SETZENund passen Sie den Test an Ihre Anforderungen an.

  13. Der Test sollte erfolgreich sein. Wenn nicht, ändern Sie den JSON an Ihre Anforderungen und testen Sie es erneut.

  14. Öffnen Sie die Amazon S3 S3-Konsole und stellen Sie sicher, dass das von Ihnen erstellte Ereignis und die Lambda-Funktion ARN vorhanden sind.

  15. Hochladen eines Objekts mit der Amazon S3 S3-Konsole oder demAWS CLIaus.

    Die CloudWatch-Konsole generiert eine CloudWatch-Ausgabe ähnlich der Folgenden.

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

    Durch den Lambda-Aufruf erhalten Sie eine Ausgabe wie die folgende.

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

    Ihre NFS-Freigabe, die auf Ihrem Client bereitgestellt ist, spiegelt dieses Update wider.

    Anmerkung

    Für Caches, die die Erstellung oder das Löschen großer Objekte in großen Buckets mit Millionen von Objekten aktualisieren, können Aktualisierungen Stunden dauern.

  16. Löschen Sie Ihr Objekt manuell mit der Amazon S3 S3-Konsole oderAWS CLIaus.

  17. Zeigen Sie die NFS-Freigabe an, die auf Ihrem Client bereitgestellt wurde Stellen Sie sicher, dass Ihr Objekt verschwunden ist (weil Ihr Cache aktualisiert wurde).

  18. Prüfen Sie Ihre CloudWatch-Protokolle, um das Protokoll Ihrer Löschung mit dem Ereignis anzuzeigenObjectRemoved:Deleteaus.

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

    Für Cron-Jobs oder geplante Aufgaben ist Ihr CloudWatch-Protokollereignisu'detail-type': u'Scheduled Event'aus.

Beim Aktualisieren des Cache wird nur der Aktualisierungsvorgang initiiert. Ist die Cache-Aktualisierung abgeschlossen, bedeutet das nicht zwangsläufig, dass die Dateiaktualisierung abgeschlossen ist. Um zu ermitteln, ob der Datei-Aktualisierungsvorgang abgeschlossen ist, bevor Sie nach neuen Dateien in der Gateway-Dateifreigabe suchen, verwenden Sie die refresh-complete-Benachrichtigung. Zu diesem Zweck können Sie sich durch ein Amazon CloudWatch CloudWatch-Ereignis benachrichtigen lassen, wenn IhreRefreshCacheVorgang ist abgeschlossen. Weitere Informationen finden Sie unter Benachrichtigungen zu Dateioperationen erhalten.