AWS S3 behandelt 403 ordnungsgemäß, nachdem getSignedUrl abgelaufen ist

Ich versuche, die 403 ordnungsgemäß zu handhaben, wenn ich eine S3-Ressource über eine abgelaufene URL besuche. Derzeit wird eine amz xml-Fehlerseite zurückgegeben. Ich habe eine 403.html-Ressource hochgeladen und dachte, ich könnte zu dieser umleiten.

Die Bucket-Ressourcen sind Assets, die von meiner App gespeichert / abgerufen wurden. Beim Lesen der Dokumente habe ich die Bucket-Eigenschaften so festgelegt, dass der Bucket als statische Webseite behandelt wird, und eine 403.html in das Bucket-Stammverzeichnis hochgeladen. Alle öffentlichen Berechtigungen werden blockiert, mit Ausnahme des öffentlichen GET-Zugriffs auf die Ressource 403.html. In den Bucket-Eigenschaften und Website-Einstellungen habe ich die 403.html als Fehlerseite angegeben. Besuchhttp://<bucket>.s3-website-us-east-1.amazonaws.com/some-asset.html leitet richtig zu @ weithttp://<bucket>.s3-website-us-east-1.amazonaws.com/403.html

Allerdings, wenn ich aws-sdk js / node benutze und Methode aufrufegetSignedUrl('getObject', params) Um die signierte URL zu generieren, wird eine andere Host-URL zurückgegeben:https://<bucket>.s3.amazonaws.com/ Das Aufrufen abgelaufener Ressourcen dieser Methode wird nicht zu 403.html umgeleitet. Ich vermute, da die Host-Adresse unterschiedlich ist, ist dies der Grund, warum sie nicht automatisch umgeleitet wird.

Ich habe auch statische Website-Routing-Regeln für Bedingung @ eingerichte

<Condition>
  <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
  <ReplaceKeyWith>403.html</ReplaceKeyWith>
</Redirect>

Trotzdem werden die signierten URLs nicht umgeleitet. Ich weiß nicht, wie ich mit diesen abgelaufenen URLs umgehen soll. Jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage