Невозможно разобрать сопоставление: проблема с созданием sftp-сервера Aws с использованием логического каталога, поддерживаемого s3 с настраиваемой HTTP-аутентификацией имени пользователя и пароля.
Мне удалось создать sftp-сервер по этой ссылке
https://www.intelligentdiscovery.io/blogs/aws-sftp-custom-identity-provider-v2
.
Однако я использовал http-backend API вместо Azure-AD для аутентификации пользователей.
Все работает нормально при использовании aws по умолчанию
DirectoryType=PATH
. Но изменив его на
Logical
введите вместе с добавлением
HomeDirectoryDetails
и удаление любых конфликтующих переменных, которые я получаю
Невозможно разобрать сопоставление -> /bucket-name/home/user
Пример лямбда-ответа:
{
"Role": "arn:aws:iam::179651610164:role/S3-Ftps-Bucket-Role",
"HomeDirectoryType": "LOGICAL",
"HomeDirectoryDetails": "[{\"Entry:\":\"/\",\"Target\":\"/bucket-name/home/user_a\"}]",
"Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"allowFolderList\",\"Action\":[\"s3:ListBucket\"],\"Effect\":\"Allow\",\"Resource\":[\"arn:aws:s3:::bucket-name/\"],\"Condition\":{\"StringLike\":{\"s3:prefix\":[\"home/*\"]}}},{\"Sid\":\"allowListBuckets\",\"Effect\":\"Allow\",\"Action\":[\"s3:ListAllMyBuckets\",\"s3:GetBucketLocation\"],\"Resource\":\"*\"},{\"Sid\":\"HomeDirectoryAccess\",\"Effect\":\"Allow\",\"Action\":[\"s3:PutObject\",\"s3:GetObject\",\"s3:DeleteObjectVersion\",\"s3:DeleteObject\",\"s3:GetObjectVersion\"],\"Resource\":[\"arn:aws:s3:::bucket-name/home/*\"]},{\"Sid\":\"DenyDeletionOfHomeDirectory\",\"Effect\":\"Deny\",\"Action\":[\"s3:DeleteObjectVersion\",\"s3:DeleteObject\"],\"Resource\":[\"arn:aws:s3:::bucket-name/home/\"]}]}"
}
Схема модели отклика для лямбда-функции приведена ниже.
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"UserUserConfig",
"type":"object",
"properties":{"Role":{"type":"string"},"Policy":{"type":"string"},
"HomeDirectory":{"type":"string"},
"HomeDirectoryDetails": {"type":"string"},
"HomeDirectoryType": {"type": "string"},
"PublicKeys":{"type":"array","items":{"type":"string"}}}
}
Я пробовал все виды сопоставления, например, как показано ниже, как на сервере семейства переносов, так и в FileZilla. И все они дают одну и ту же ошибку: Невозможно разобрать сопоставление. Однако код состояния 200.
1. / -> /bucket-name
2. / -> /bucket-name/home
3. / -> /bucket-name/home/
4. / -> /home
5. /userA -> /bucket-name/home/userA/
Тестирование из FileZilla дает ошибку:
Status: Connecting to s-xxxxxxxx.server.transfer.us-east-1.amazonaws.com...
Status: Using username "xxxx".
Status: Access denied
Error: Authentication failed.
Error: Critical error: Could not connect to server
Тестирование на ошибке сервера Transfer-Family:
{
"Response": "{}",
"StatusCode": 200,
"Message": "[Unable to parse mapping -> /bucket-name/home/xxxx]",
"Url": "https://xxxxxx.execute-api.us-east-1.amazonaws.com/prod/servers/s-xxxxxx/users/user/config"
}