Amazon.Transfer.Model.InvalidRequestException: невозможно установить HomeDirectory для LOGICAL HomeDirectoryType
Друзья,
у меня есть Dictionary<int, string>
который содержит список идентификаторов отделов и имена его папок s3. Например,{ {key=1, value="dept-1"}, {key=2, value="dept-2"} }
и т.д. Для каждой из этих папок s3 я хотел бы создать пользователя user-dept-group-{DepartmentId}
логически сопоставлен с папкой сервера SFTP. Например,user-dept-group-1
будет логическая папка dept-1
сопоставлен с my-s3-bucket/dept-1
на сервере aws sftp. Ниже приведен код, который я использовал и всегда получаюCannot set HomeDirectory for LOGICAL HomeDirectoryType
ошибка.
Если я прокомментирую HomeDirectoryMappings
и установите HomeDirectoryType
к HomeDirectoryType.PATH
, затем я вижу, как создается пользователь.
public async Task<List<CreateUserResponse>> SetupSftpUser(Dictionary<int, string> masterDeptFolders)
{
var result = new List<CreateUserResponse>();
var awsTransferClient = new AmazonTransferClient(AwsAccessKey, AwsSecretKey, RegionEndpoint.USEast1);
foreach (var (key, folder) in masterDeptFolders)
{
var createUserRequest = new CreateUserRequest
{
HomeDirectory = $"/{ParentBucketName}/{folder}/",
HomeDirectoryMappings = new List<HomeDirectoryMapEntry>{new HomeDirectoryMapEntry{Entry = $"/{folder}", Target = $"/{ParentBucketName}/{folder}" } },
HomeDirectoryType = HomeDirectoryType.LOGICAL,
// Policy = GetSftpPolicy(),
Tags = GetTags(key, folder),
ServerId = SftpServerId,
UserName = $"user-dept-group-{key}",
Role = SftpRole,
//SshPublicKeyBody = "MY_DEPT_SSH.PUB_FILE"
};
var response = await awsTransferClient.CreateUserAsync(createUserRequest);
if (response.HttpStatusCode == HttpStatusCode.OK)
{
result.Add(response);
}
}
return result;
}
РЕДАКТИРОВАТЬ: Во всех примерах я заметил одну вещь : имена папок ведра s3 упоминаются как<s3bucket>/home/username
. Нужно ли мне иметь эту структуру папок, чтобы она работала?
1 ответ
Я узнал, что HomeDirectory
был не нужен, и значение Entry должно быть установлено на \
. Ниже показано, какcreateUserRequest
выглядит как.
var createUserRequest = new CreateUserRequest
{
HomeDirectoryMappings = new List<HomeDirectoryMapEntry>{new HomeDirectoryMapEntry{Entry = "/", Target = $"/{ParentBucketName}/{folder}" } },
HomeDirectoryType = HomeDirectoryType.LOGICAL,
// Policy = GetSftpPolicy(),
Tags = GetTags(key, folder),
ServerId = SftpServerId,
UserName = $"user-dept-group-{key}",
Role = SftpRole,
//SshPublicKeyBody = "MY_DEPT_SSH.PUB_FILE"
};