Skip to content

Terraform-managed repo.

Notifications You must be signed in to change notification settings

honestbank/terraform-aws-sftp

Repository files navigation

Terraform AWS SFTP

This script builds an AWS Transfer Family server that is backed by an S3 bucket:

* Communicates via SFTP (ftp, ftps are disabled)
* Users access the SFTP server via SSH keys
* Provides readonly and write users
* Users are locked to their home directory and sub-directories
* SFTP activity logged to Cloudwatch
* Backs up the SFTP server S3 bucket to another bucket

Requirements

Name Version
terraform ~> 1.0.0
aws ~> 3.52.0

Providers

Name Version
aws 3.52.0

Inputs

Name Description Type Default Required
aws_region AWS region to install the Transfer Server (SFTP server) into any n/a yes
aws_vpc_id The VPC id of the VPC to install Transfer Server into any n/a yes
transfer_endpoint_type PUBLIC or VPC. Defaults to PUBLIC. any PUBLIC no
transfer_server_name The name to be given the the Transfer Server any n/a yes
transfer_server_s3_bucket_name The name of the S3 bucket supplying storage to the Transfer Server any n/a yes
transfer_server_write_users A list of users with write access in the format listed below any [] yes
transfer_server_readonly_users A list of users with readonly access in the format listed below any [] yes

Example of transfer_server_write_users and terraform_server_readonly_users:

transfer_server_write_users = [
    {
    user_name      = "example1-user"
    ssh_key        = "<public SSH key for example1-user>"
    home_directory = "<home directory for example-1 user>"
    },
    {
    user_name      = "example2-user"
    ssh_key        = "<public SSH key for example2-user>"
    home_directory = "<home directory for example-2 user>"
    }
]

transfer_server_readonly_users = [
    {
    user_name      = "example1-readonly-user"
    ssh_key        = "<public SSH key for example1-readonly-user>"
    home_directory = "<home directory for example-readonly-1 user>"
    },
    {
    user_name      = "example2-readonly-user"
    ssh_key        = "<public SSH key for example2-readonly-user>"
    home_directory = "<home directory for example-readonly-2 user>"
    }
]

Outputs

Name Description
transfer_server_arn The Amazon Resource Name (ARN) of the transfer server
transfer_server_id The Terraform id of the transfer server resource
transfer_server_endpoint The endpoint (URI) of the transfer server