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"
};
Другие вопросы по тегам