Aktualisieren des Amazon S3 S3-Bucket-Objekt-Caches - AWS Storage 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 des Amazon S3 S3-Bucket-Objekt-Caches

Während Ihr NFS- oder SMB-Client Dateisystemoperationen ausführt, führt Ihr Gateway ein Inventar der Objekte im Amazon S3 S3-Objekt-Cache, die mit Ihrer Dateifreigabe verknüpft sind. Ihr Gateway verwendet dieses zwischengespeicherte Inventar, um die Latenz und Häufigkeit von Amazon S3 S3-Anfragen zu reduzieren. Bei diesem Vorgang werden keine Dateien in den S3 File Gateway-Cache-Speicher importiert. Es aktualisiert nur das zwischengespeicherte Inventar, um Änderungen im Inventar der Objekte im Amazon S3 S3-Objekt-Cache widerzuspiegeln.

Um den S3-Bucket-Objekt-Cache für Ihre Dateifreigabe zu aktualisieren, wählen Sie aus der folgenden Liste die Methode aus, die am besten zu Ihrem Anwendungsfall passt, und führen Sie dann das entsprechende Verfahren unten durch.

Anmerkung

Unabhängig von der Methode, die Sie verwenden, wird ein Verzeichnis durch das erstmalige Auflisten initialisiert, sodass das Gateway die Metadateninhalte des Verzeichnisses aus Amazon S3 auflistet. Die Zeit, die für die Initialisierung eines Verzeichnisses benötigt wird, ist proportional zur Anzahl der Einträge in diesem Verzeichnis.

Konfigurieren Sie einen Zeitplan für die automatische Cache-Aktualisierung mithilfe der Storage Gateway Gateway-Konsole

Das folgende Verfahren konfiguriert einen Zeitplan für die automatische Cacheaktualisierung auf der Grundlage eines von Ihnen angegebenen Time To Live (TTL) -Werts. Bevor Sie einen auf TTL basierenden Zeitplan für die Cacheaktualisierung konfigurieren, sollten Sie Folgendes berücksichtigen:

  • TTL wird als die Zeitspanne seit der letzten Cacheaktualisierung für ein bestimmtes Verzeichnis gemessen.

  • Eine TTL-basierte Cacheaktualisierung erfolgt nur, wenn nach Ablauf der angegebenen TTL-Periode auf ein bestimmtes Verzeichnis zugegriffen wird.

  • Die Aktualisierung ist nicht rekursiv. Sie findet nur in den spezifischen Verzeichnissen statt, auf die zugegriffen wird.

  • Für die Aktualisierung fallen Amazon S3-API-Kosten nur für Verzeichnisse an, die seit dem Ablauf der TTL nicht synchronisiert wurden.

    • Verzeichnisse werden nur synchronisiert, wenn auf sie über NFS- oder SMB-Aktivitäten zugegriffen wird.

    • Die Synchronisation erfolgt nicht häufiger als in der von Ihnen angegebenen TTL-Periode.

  • Die Konfiguration einer TTL-basierten Cache-Aktualisierung wird nur empfohlen, wenn Sie den Inhalt Ihres Amazon S3 S3-Buckets häufig direkt außerhalb des Workflows zwischen dem Gateway und dem Amazon S3 S3-Bucket aktualisieren.

  • NFS- und SMB-Operationen, die auf Verzeichnisse zugreifen, deren Ablauf abgelaufen ist, TTLs werden blockiert, während das Gateway den Inhalt des Verzeichnisses aktualisiert.

    Anmerkung

    Da die Cacheaktualisierung Verzeichniszugriffsvorgänge blockieren kann, empfehlen wir, den längsten TTL-Zeitraum zu konfigurieren, der für Ihre Bereitstellung praktikabel ist.

So konfigurieren Sie einen Zeitplan für die automatische Cache-Aktualisierung mit der Storage Gateway Gateway-Konsole
  1. Öffnen Sie die Storage Gateway Gateway-Konsole https://console.aws.amazon.com/storagegateway/zu Hause.

  2. Wählen Sie Dateifreigaben.

  3. Wählen Sie die Dateifreigabe aus, für die Sie den Aktualisierungszeitplan konfigurieren möchten.

  4. Wählen Sie für Actions die Option Edit file share settings.

  5. Aktivieren Sie für Automatische Cacheaktualisierung von S3 danach das Kontrollkästchen und legen Sie die Uhrzeit in Tagen, Stunden und Minuten fest, zu der der Cache der Dateifreigabe mithilfe von Time To Live (TTL) aktualisiert werden soll. TTL ist die Zeitspanne seit der letzten Aktualisierung, nach der der Zugriff auf das Verzeichnis dazu führen würde, dass das File Gateway zuerst den Inhalt dieses Verzeichnisses aus dem Amazon S3 S3-Bucket aktualisiert.

  6. Wählen Sie Änderungen speichern aus.

Konfigurieren Sie einen Zeitplan für die automatische Cache-Aktualisierung AWS Lambda mithilfe einer CloudWatch Amazon-Regel

So konfigurieren Sie einen Zeitplan für die automatische Cache-Aktualisierung AWS Lambda mithilfe einer CloudWatch Amazon-Regel
  1. Identifizieren Sie den S3-Bucket, der vom S3 File Gateway verwendet wird.

  2. Vergewissern Sie sich, dass der Abschnitt Event leer ist. Er wird später automatisch aufgefüllt.

  3. Erstellen Sie eine IAM-Rolle und lassen Sie Trust Relationship for lambda.amazonaws.com Lambda zu.

  4. Verwenden Sie die folgende Richtlinie.

    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. 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:672406474878:share/share-E51FBS9C' ) print(response) return 'Your FileShare cache has been refreshed'
  7. Wählen Sie für die Ausführungsrolle die IAM-Rolle aus, die Sie erstellt haben.

  8. Optional: Fügen Sie einen Auslöser für Amazon S3 hinzu und wählen Sie das Ereignis ObjectCreatedoder aus ObjectRemoved.

    Anmerkung

    RefreshCachemuss einen Prozess abschließen, bevor ein anderer gestartet wird. Wenn Sie viele Objekte in einem Bucket erstellen oder löschen, kann sich die Leistung verschlechtern. Daher raten wir davon ab, S3-Trigger zu verwenden. Verwenden Sie stattdessen die unten beschriebene CloudWatch Amazon-Regel.

  9. Erstellen Sie eine CloudWatch Regel auf der CloudWatch Konsole und fügen Sie einen Zeitplan hinzu. Im Allgemeinen empfehlen wir einen festen Tarif von 30 Minuten. Bei großen S3-Buckets können Sie jedoch 1—2 Stunden verwenden.

  10. Fügen Sie einen neuen Auslöser 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. Wählen Sie S3 PUT und passen Sie den Test an Ihre Anforderungen an.

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

  14. Öffnen Sie die Amazon S3 S3-Konsole und überprüfen Sie, ob das von Ihnen erstellte Ereignis und der ARN der Lambda-Funktion vorhanden sind.

  15. Laden Sie ein Objekt mithilfe der Amazon S3-Konsole oder der in Ihren S3-Bucket hoch AWS CLI.

    Die CloudWatch Konsole generiert eine CloudWatch Ausgabe, die der folgenden ähnelt.

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

    Der Lambda-Aufruf gibt Ihnen eine Ausgabe, die der folgenden ähnelt.

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

    Ihr auf Ihrem Client installiertes NFS-Laufwerk wird dieses Update widerspiegeln.

    Anmerkung

    Bei Caches, die das Erstellen oder 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 oder AWS CLI.

  17. Sehen Sie sich die auf Ihrem Client installierte NFS-Freigabe an. Stellen Sie sicher, dass Ihr Objekt nicht mehr vorhanden ist (weil Ihr Cache aktualisiert wurde).

  18. Überprüfe deine CloudWatch Logs, um das Protokoll deiner Löschung mit dem Ereignis ObjectRemoved:Delete zu sehen.

    { 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 lautet Ihr CloudWatch Protokollereignisu'detail-type': u'Scheduled Event'.

Führen Sie mit der Storage Gateway Gateway-Konsole eine manuelle Cache-Aktualisierung durch

So führen Sie eine manuelle Cache-Aktualisierung mit der Storage Gateway Gateway-Konsole durch
  1. Öffnen Sie die Storage Gateway Gateway-Konsole https://console.aws.amazon.com/storagegateway/zu Hause.

  2. Wählen Sie Dateifreigaben und dann die Dateifreigabe aus, für die Sie die Aktualisierung durchführen möchten.

  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.

Führen Sie eine manuelle Cache-Aktualisierung mithilfe der Storage Gateway Gateway-API durch

Das folgende Verfahren führt eine manuelle Cacheaktualisierung mithilfe der Storage Gateway Gateway-API durch. Bevor Sie eine API-basierte Cache-Aktualisierung durchführen, sollten Sie Folgendes beachten:

  • Sie können eine rekursive oder eine nicht-rekursive Aktualisierung angeben.

  • Eine rekursive Aktualisierung ist ressourcenintensiver und teurer.

  • Die Aktualisierung verursacht Amazon S3-API-Kosten nur für Verzeichnisse, die Sie als Argumente in der Anfrage übergeben, und für untergeordnete Verzeichnisse, wenn Sie eine rekursive Aktualisierung angeben.

  • Die Aktualisierung wird gleichzeitig mit anderen Vorgängen ausgeführt, während das Gateway verwendet wird.

    • NFS- und SMB-Operationen werden bei Aktualisierungen im Allgemeinen nicht blockiert, es sei denn, für das Verzeichnis, auf das der Vorgang zugreift, ist eine Aktualisierung aktiv.

    • Das Gateway kann nicht feststellen, ob der aktuelle Cache-Inhalt veraltet ist, und verwendet seinen aktuellen Inhalt unabhängig von der Aktualität für NFS- und SMB-Operationen.

    • Da bei einer Cacheaktualisierung virtuelle Gateway-Hardwareressourcen verwendet werden, kann die Gateway-Leistung während der Aktualisierung negativ beeinflusst werden.

  • Die Durchführung einer API-basierten Cache-Aktualisierung wird nur empfohlen, wenn Sie den Inhalt Ihres Amazon S3 S3-Buckets direkt außerhalb des Workflows zwischen dem Gateway und dem Amazon S3 S3-Bucket aktualisieren.

    Anmerkung

    Wenn Sie die spezifischen Verzeichnisse kennen, in denen Sie Amazon S3 S3-Inhalte außerhalb des Gateway-Workflows aktualisieren, empfehlen wir, diese Verzeichnisse in Ihrer API-basierten Aktualisierungsanfrage anzugeben, um die Amazon S3 S3-API-Kosten und die Auswirkungen auf die Gateway-Leistung zu reduzieren.

So führen Sie eine manuelle Cache-Aktualisierung mithilfe der Storage Gateway Gateway-API durch
  • Senden Sie eine HTTP-POST-Anforderung, um den RefreshCache Vorgang mit den gewünschten Parametern über die Storage Gateway Gateway-API aufzurufen. Weitere Informationen finden Sie RefreshCachein der AWS Storage Gateway API-Referenz.

    Anmerkung

    Durch das Senden der RefreshCache Anfrage wird nur der Cache-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 abonnieren, um über eine CloudWatch Amazon-Veranstaltung benachrichtigt zu werden. Weitere Informationen finden Sie unter Über Dateioperationen benachrichtigt werden.