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.
Verwendung logischer Verzeichnisse zur Vereinfachung Ihrer Transfer Family Family-Verzeichnisstrukturen
Um Ihre AWS Transfer Family Serververzeichnisstruktur zu vereinfachen, können Sie logische Verzeichnisse verwenden. Mit logischen Verzeichnissen können Sie eine virtuelle Verzeichnisstruktur erstellen, die benutzerfreundliche Namen verwendet, unter denen Ihre Benutzer navigieren, wenn sie sich mit Ihrem Amazon S3 S3-Bucket oder EFS Amazon-Dateisystem verbinden. Wenn Sie logische Verzeichnisse verwenden, können Sie vermeiden, absolute Verzeichnispfade, Amazon S3 S3-Bucket-Namen und EFS Dateisystemnamen an Ihre Endbenutzer weiterzugeben.
Anmerkung
Obwohl dies von Ihrer Verwendung von Sitzungsrichtlinien und anderen internen Anforderungen abhängt, benötigen Sie im Allgemeinen nicht sowohl Sitzungsrichtlinien als auch logische Verzeichnisse, um sicherzustellen, dass Ihre Benutzer nur auf die Dateien zugreifen, für die Sie es vorgesehen haben. Wenn Sie logische Verzeichnisse einrichten, sollten Sie nicht auch Sitzungsrichtlinien erstellen, da beide zu Fehlern führen können, wenn der Zugriff verweigert wurde.
Sie können logische Verzeichnisse verwenden, um das Stammverzeichnis des Benutzers an einen gewünschten Ort innerhalb Ihrer Speicherhierarchie zu setzen, indem Sie eine sogenannte chroot Operation ausführen. In diesem Modus können Benutzer nicht zu einem Verzeichnis außerhalb des Home- oder Stammverzeichnisses navigieren, das Sie für sie konfiguriert haben.
Obwohl beispielsweise ein Amazon S3-Benutzer nur auf den Zugriff beschränkt wurde, ermöglichen es einige Clients Benutzern/
, einen Ordner nach oben zu durchsuchen. mybucket
/home
/${transfer:UserName
}/
In dieser Situation landet der Benutzer erst wieder in seinem vorgesehenen Home-Verzeichnis, nachdem er sich vom Transfer Family Family-Server ab- und wieder angemeldet hat. Durch das Ausführen eines chroot Vorgangs kann verhindert werden, dass diese Situation eintritt.mybucket
/home
Sie können Ihre eigene Verzeichnisstruktur mit Buckets und Präfixen erstellen. Diese Funktion ist nützlich, wenn Sie einen Workflow haben, der eine bestimmte Verzeichnisstruktur erwartet, die Sie nicht über Bucket-Präfixe replizieren können. Sie können auch Links zu mehreren nicht zusammenhängenden Speicherorten innerhalb von Amazon S3 erstellen, ähnlich wie beim Erstellen eines symbolischen Links in einem Linux-Dateisystem, in dem Ihr Verzeichnispfad auf einen anderen Speicherort im Dateisystem verweist.
Logische Verzeichniszuordnungen FILE
Der HomeDirectoryMapEntry
Datentyp enthält jetzt einen Type
Parameter. Bevor dieser Parameter existierte, hätten Sie eine logische Verzeichniszuordnung erstellen können, bei der das Ziel eine Datei war. Wenn Sie zuvor eine dieser Arten von logischen Verzeichniszuordnungen erstellt haben, müssen Sie den Wert explizit Type
auf festlegenFILE
, da diese Zuordnungen sonst in Zukunft nicht mehr richtig funktionieren.
Eine Möglichkeit, dies zu tun, besteht darin UpdateUser
API, die bestehende Zuordnung aufzurufen und auf Type
FILE
zu festzulegen.
Regeln für die Verwendung logischer Verzeichnisse
Bevor Sie Ihre logischen Verzeichniszuordnungen erstellen, sollten Sie sich mit den folgenden Regeln vertraut machen:
-
Wenn dies
Entry
der Fall ist"/"
, können Sie nur eine Zuordnung verwenden, da überlappende Pfade nicht zulässig sind. -
Logische Verzeichnisse unterstützen Zuordnungen von bis zu 2,1 MB (für Benutzer, die vom Service verwaltet werden, liegt dieser Grenzwert bei 2.000 Einträgen). Das heißt, die Datenstruktur, die die Zuordnungen enthält, hat eine maximale Größe von 2,1 MB. Wenn Sie über viele Mappings verfügen, können Sie die Größe Ihrer Mappings wie folgt berechnen:
-
Schreiben Sie ein typisches Mapping in dem Format aus
{"Entry":"/
, woentry-path
","Target":"/target-path
"}
undentry-path
sind die tatsächlichen Werte, die Sie verwenden werden.target-path
-
Zählen Sie die Zeichen in dieser Zeichenfolge und fügen Sie dann eins hinzu (1).
-
Multiplizieren Sie diese Zahl mit der ungefähren Anzahl von Zuordnungen, die Sie für Ihren Server haben.
Wenn die Zahl, die Sie in Schritt 3 geschätzt haben, weniger als 2,1 MB beträgt, liegen Ihre Zuordnungen innerhalb des akzeptablen Grenzwerts.
-
-
Ziele können die
${transfer:UserName}
Variable verwenden, wenn der Bucket- oder Dateisystempfad auf der Grundlage des Benutzernamens parametrisiert wurde. -
Ziele können Pfade in verschiedenen Buckets oder Dateisystemen sein, aber Sie müssen sicherstellen, dass die Rolle mapped AWS Identity and Access Management (IAM) (der
Role
Parameter in der Antwort) Zugriff auf diese Buckets oder Dateisysteme bietet. -
Geben Sie den
HomeDirectory
Parameter nicht an, da dieser Wert durch dieEntry
Target
Paare impliziert wird, wenn Sie denLOGICAL
Wert für den Parameter verwenden.HomeDirectoryType
-
Ziele müssen mit einem Schrägstrich (
/
) beginnen, verwenden aber keine abschließenden Schrägstriche (/
), wenn Sie den angeben.Target
Ist zum Beispiel akzeptabel,/
ist es aber auch nichtDOC-EXAMPLE-BUCKET
/images
.DOC-EXAMPLE-BUCKET
/images/
DOC-EXAMPLE-BUCKET
/images/ -
Amazon S3 ist ein Objektspeicher, was bedeutet, dass Ordner ein virtuelles Konzept sind und es keine tatsächliche Verzeichnishierarchie gibt. Wenn Ihre Anwendung einen
stat
Vorgang von einem Client ausgibt, wird alles als Datei klassifiziert, wenn Sie Amazon S3 als Speicher verwenden. Dieses Verhalten wird unter Organisieren von Objekten in der Amazon S3 S3-Konsole mithilfe von Ordnern im Amazon Simple Storage Service-Benutzerhandbuch beschrieben. Wenn in Ihrer Anwendungstat
genau angegeben werden muss, ob es sich um eine Datei oder einen Ordner handelt, können Sie Amazon Elastic File System (AmazonEFS) als Speicheroption für Ihre Transfer Family Family-Server verwenden. -
Wenn Sie logische Verzeichniswerte für Ihren Benutzer angeben, hängt der verwendete Parameter vom Benutzertyp ab:
-
Geben Sie für vom Dienst verwaltete Benutzer logische Verzeichniswerte in
HomeDirectoryMappings
ein. -
Geben Sie für Benutzer eines benutzerdefinierten Identitätsanbieters logische Verzeichniswerte in an
HomeDirectoryDetails
.
-
Wichtig
Sofern Sie sich nicht dafür entscheiden, die Leistung Ihrer Amazon S3 S3-Verzeichnisse zu optimieren (wenn Sie einen Server erstellen oder aktualisieren), muss das Stammverzeichnis beim Start vorhanden sein. Für Amazon S3 bedeutet dies, dass Sie bereits ein Null-Byte-Objekt erstellt haben müssen, das mit einem Schrägstrich (/
) endet, um den Stammordner zu erstellen. Die Vermeidung dieses Problems ist ein Grund, eine Optimierung der Amazon S3 S3-Leistung in Betracht zu ziehen.
Implementierung logischer Verzeichnisse und chroot
Um logische Verzeichnisse und chroot Funktionen zu verwenden, müssen Sie wie folgt vorgehen:
Aktivieren Sie logische Verzeichnisse für jeden Benutzer. Setzen Sie dazu den HomeDirectoryType
Parameter auf, LOGICAL
wenn Sie Ihren Benutzer erstellen oder aktualisieren.
"HomeDirectoryType": "LOGICAL"
chroot
Erstellen Sie für eine Verzeichnisstrukturchroot, die aus einer einzelnen Verzeichnisstruktur Entry
und einer Target
Paarung für jeden Benutzer besteht. Der Stammordner ist der Entry
Punkt und der Target
ist der Speicherort in Ihrem Bucket oder Dateisystem, dem die Zuordnung zugewiesen werden soll.
Sie können einen absoluten Pfad wie im vorherigen Beispiel verwenden, oder Sie können eine dynamische Ersetzung für den Benutzernamen durch verwenden${transfer:UserName}
, wie im folgenden Beispiel.
[{"Entry": "/", "Target": "/mybucket/${transfer:UserName}"}]
Im vorherigen Beispiel ist der Benutzer an sein Stammverzeichnis gebunden und kann sich in der Hierarchie nicht weiter oben bewegen.
Struktur des virtuellen Verzeichnisses
Für eine virtuelle Verzeichnisstruktur können Sie mehrere Entry
Target
Paarungen mit Zielen an einer beliebigen Stelle in Ihren S3-Buckets oder EFS Dateisystemen erstellen, auch über mehrere Buckets oder Dateisysteme hinweg, sofern die IAM Rollenzuweisung des Benutzers über Zugriffsberechtigungen verfügt.
Im folgenden Beispiel für eine virtuelle Struktur befindet sich der Benutzer, wenn er sich anmeldet AWS SFTP, im Stammverzeichnis mit den /pics
Unterverzeichnissen,, und. /doc
/reporting
/anotherpath/subpath/financials
Anmerkung
Sofern Sie sich nicht dafür entscheiden, die Leistung Ihrer Amazon S3 S3-Verzeichnisse zu optimieren (wenn Sie einen Server erstellen oder aktualisieren), muss entweder der Benutzer oder ein Administrator die Verzeichnisse erstellen, sofern sie noch nicht existieren. Die Vermeidung dieses Problems ist ein Grund, eine Optimierung der Amazon S3 S3-Leistung in Betracht zu ziehen.
Für Amazon benötigen Sie weiterhin den AdministratorEFS, um die logischen Zuordnungen oder das /
Verzeichnis zu erstellen.
[ {"Entry": "/pics", "Target": "/bucket1/pics"}, {"Entry": "/doc", "Target": "/bucket1/anotherpath/docs"}, {"Entry": "/reporting", "Target": "/reportingbucket/Q1"}, {"Entry": "/anotherpath/subpath/financials", "Target": "/reportingbucket/financials"}]
Anmerkung
Sie können Dateien nur in die spezifischen Ordner hochladen, die Sie zuordnen. Das bedeutet, dass Sie im vorherigen Beispiel nicht in /anotherpath
oder anotherpath/subpath
Verzeichnisse hochladen können, sondern nuranotherpath/subpath/financials
. Sie können diesen Pfaden auch nicht direkt zuordnen, da überlappende Pfade nicht zulässig sind.
Gehen Sie beispielsweise davon aus, dass Sie die folgenden Zuordnungen erstellen:
{ "Entry": "/pics", "Target": "/mybucket/pics" }, { "Entry": "/doc", "Target": "/mybucket/mydocs" }, { "Entry": "/temp", "Target": "/mybucket" }
Sie können nur Dateien in diese Buckets hochladen. Wenn Sie zum ersten Mal eine Verbindung herstellensftp
, werden Sie im Stammverzeichnis abgelegt. /
Wenn Sie versuchen, eine Datei in dieses Verzeichnis hochzuladen, schlägt der Upload fehl. Die folgenden Befehle zeigen eine Beispielsequenz:
sftp> pwd Remote working directory: / sftp> put file Uploading file to /file remote open("/file"): No such file or directory
Um in eine beliebige Datei hochzuladendirectory/sub-directory
, müssen Sie den Pfad explizit dem zuordnensub-directory
.
Weitere Informationen zur Konfiguration logischer Verzeichnisse und chroot für Ihre Benutzer, einschließlich einer AWS CloudFormation Vorlage, die Sie herunterladen und verwenden können, finden Sie unter Vereinfachen Sie Ihre AWS SFTP Struktur mit chroot und logischen Verzeichnissen
Beispiel für die Konfiguration logischer Verzeichnisse
In diesem Beispiel erstellen wir einen Benutzer und weisen ihm zwei logische Verzeichnisse zu. Der folgende Befehl erstellt einen neuen Benutzer (für einen vorhandenen Transfer Family Family-Server) mit logischen Verzeichnissen pics
unddoc
.
aws transfer create-user --user-name marymajor-logical --server-id s-11112222333344445 --role arn:aws:iam::1234abcd5678:role/marymajor-role --home-directory-type LOGICAL \ --home-directory-mappings "[{\"Entry\":\"/pics\", \"Target\":\"/
DOC-EXAMPLE-BUCKET1
/pics\"}, {\"Entry\":\"/doc\", \"Target\":\"/DOC-EXAMPLE-BUCKET2
/test/mydocs\"}]" \ --ssh-public-key-body file://~/.ssh/id_rsa.pub
Wenn marymajor
es sich um einen bestehenden Benutzer handelt und sein Home-Verzeichnistyp istPATH
, können Sie ihn LOGICAL
mit einem ähnlichen Befehl wie dem vorherigen ändern.
aws transfer update-user --user-name marymajor-logical \ --server-id s-11112222333344445 --role arn:aws:iam::1234abcd5678:role/marymajor-role \ --home-directory-type LOGICAL --home-directory-mappings "[{\"Entry\":\"/pics\", \"Target\":\"/
DOC-EXAMPLE-BUCKET1
/pics\"}, \ {\"Entry\":\"/doc\", \"Target\":\"/DOC-EXAMPLE-BUCKET2
/test/mydocs\"}]"
Beachten Sie Folgendes:
-
Wenn die Verzeichnisse
/
und nochDOC-EXAMPLE-BUCKET1
/pics/
nicht existieren, muss der Benutzer (oder ein Administrator) sie erstellen.DOC-EXAMPLE-BUCKET2
/test/mydocs -
Wenn sie
marymajor
eine Verbindung zum Server herstellt und denls -l
Befehl ausführt, sieht sie Folgendes:drwxr--r-- 1 - - 0 Mar 17 15:42 doc drwxr--r-- 1 - - 0 Mar 17 16:04 pics
-
marymajor
kann auf dieser Ebene keine Dateien oder Verzeichnisse erstellen. Innerhalb vonpics
und kann siedoc
jedoch Unterverzeichnisse hinzufügen. -
Dateien, die sie zu
pics
Amazon S3 S3-Pfaden hinzufügt/
DOC-EXAMPLE-BUCKET1
/pics/
bzw. zu diesen hinzugefügtDOC-EXAMPLE-BUCKET2
/test/mydocsdoc
werden. -
In diesem Beispiel geben wir zwei verschiedene Buckets an, um diese Möglichkeit zu veranschaulichen. Sie können jedoch denselben Bucket für mehrere oder alle logischen Verzeichnisse verwenden, die Sie für den Benutzer angeben.
Logische Verzeichnisse für Amazon konfigurieren EFS
Wenn Ihr Transfer Family Family-Server Amazon verwendetEFS, muss das Home-Verzeichnis für den Benutzer mit Lese- und Schreibzugriff erstellt werden, bevor der Benutzer in seinem logischen Home-Verzeichnis arbeiten kann. Der Benutzer kann dieses Verzeichnis nicht selbst erstellen, da ihm die entsprechenden Berechtigungen für mkdir
sein logisches Home-Verzeichnis fehlen würden.
Wenn das Basisverzeichnis des Benutzers nicht existiert und er einen ls
Befehl ausführt, reagiert das System wie folgt:
sftp> ls remote readdir ("/"): No such file or directory
Ein Benutzer mit Administratorzugriff auf das übergeordnete Verzeichnis muss das logische Home-Verzeichnis des Benutzers erstellen.
Benutzerdefinierte AWS Lambda Antwort
Sie können logische Verzeichnisse mit einer Lambda-Funktion verwenden, die eine Verbindung zu Ihrem benutzerdefinierten Identitätsanbieter herstellt. Dazu geben Sie in Ihrer Lambda-Funktion die Target
Werte HomeDirectoryType
as LOGICAL
und add Entry
und für den HomeDirectoryDetails
Parameter an. Beispielsweise:
HomeDirectoryType: "LOGICAL" HomeDirectoryDetails: "[{\"Entry\": \"/\", \"Target\": \"/
DOC-EXAMPLE-BUCKET
/theRealFolder"}]"
Der folgende Code ist ein Beispiel für eine erfolgreiche Antwort auf einen benutzerdefinierten Lambda-Authentifizierungsaufruf.
aws transfer test-identity-provider --server-id s-1234567890abcdef0 --user-name myuser { "Url": "https://a1b2c3d4e5.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234567890abcdef0/users/myuser/config", "Message": "", "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/bob-usa-role\",\"HomeDirectoryType\": \"LOGICAL\",\"HomeDirectoryDetails\": \"[{\\\"Entry\\\":\\\"/myhome\\\",\\\"Target\\\":\\\"/
DOC-EXAMPLE-BUCKET
/theRealFolder\\\"}]\",\"PublicKeys\": \"[ssh-rsa myrsapubkey]\"}", "StatusCode": 200 }
Anmerkung
Die "Url":
Zeile wird nur zurückgegeben, wenn Sie eine API Gateway-Methode als Ihren benutzerdefinierten Identitätsanbieter verwenden.