Accessing Amazon S3 buckets via Transmit

I’ll describe the steps for creating access keys, a S3 bucket, and setup Transmit to connect to your S3 bucket. In addition, I’ve collected a few final notes that may help you get up and running with whatever your end goal might be.

1. Create Access Keys in AWS console

If you haven’t done so already, you need to setup access keys (access key ID and a secret access key) in the security credentials section of your AWS account. If you are logged into to AWS console, you can get there by clicking on your name in the upper-right corner and then clicking on Security Credentials.

Screenshot of AWS console with link to Security Credentials

Image 1

Once there, expand Access Keys and click on the Create New Access Key button; you’ll get your access key ID and secret key. Copy both those out of there, especially the secret key, because after you close the pop-up, you won’t be able to retrieve it again.

2. Create a S3 bucket in S3 console

Head over to the S3 console in the AWS console and click on the Create Bucket button. You’ll be prompted to create your bucket.

Screenshot of the S3 service dashboard in the AWS console

Image 2

Enter a bucket name and click Create.

3. Connect to S3 via Transmit

Open Transmit and connect to Amazon’s S3 by entering s3.amazonaws.com in the Server field, and your access key ID and secret in the following two fields, respectively.

Screenshot of connecting to S3 via Transmit

Image 3

After connecting, you should see your bucket.

Notes

Accessing your files

You’ll be able to access your files via https://s3.amazonaws.com/your-bucket-name/your-file.txt.

403 Forbidden

If you upload a file via Transmit or the S3 console, by default only you will have permission to view the file. If you have select files that you want to make publically accessible, you can simply right-click on those files in Transmit, select Get Info, and then set Read to World.

If you want to make all files automatically public, you can add a bucket policy to your bucket.

{
  "Version":"2012-10-17",
  "Statement":[{
	"Sid":"AddPerm",
        "Effect":"Allow",
	  "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}

Be sure to change your-bucket-name to your bucket name. Copy and paste this policy under your bucket’s properties via the Add bucket policy button that can be found when expanding Permissions. (Mine says edit because I’ve already added one.)

Screenshot of S3 bucket permissions

Image 4

Static website hosting

If you want to serve static HTML files via your S3 bucket, you need to select Enable Website Hosting under your bucket’s properties.

Screenshot of S3's bucket properties

Image 5

Viewing your static website files

The endpoint URL, also found in your bucket’s properties, is what you use to access your static website e.g. your-bucket-name.s3-website-us-east-1.amazonaws.com.

Custom domain with S3 static website

Amazon has directions on how you can use their Route 53 service (DNS) to setup your domain to serve your static website.

I hope this helps you get started, and if you have any questions or comments, feel free to leave them below.

7 thoughts on “Accessing Amazon S3 buckets via Transmit

  1. Richard

    Any thoughts on why this is happening? … I have a php script that uploads a file to S3. That file is then downloadable from a link on the site. If I bulk upload files using Transmit, those files are NOT downloadable via a link on the same web site. I looked at the permissions on both files (from web, from transmit) and they are the same. I do have a policy requiring download only from referring site. It almost seems like unless the site was originator for the upload, downloads are not allowed. How can I allow the bulk uploads to download too. This would be a huge clarity for me if you have the time to explain. Feel free to email me directly. Thanks.

    Reply
    1. Ryan Sechrest Post author

      I don’t have experience with this particular scenario, however, for testing, if you remove your referrer policy, does the link then work for files uploaded via PHP and Transmit? If the issue does not occur when the policy is removed, if you want to send me a copy of the policy, I can review it to see if there are any glaring issues with it.

      Reply
  2. Kevin Reeves

    Thanks for the information. However, I’m getting the following error when connecting.

    “Could not connect to server s3.amazonaws.com. Connection timed out or server hung up. The server you are connecting to may be configured to limit the number of connections you are allowed to make.”

    Any help would be greatly appreciated.

    Reply
    1. Ryan Sechrest Post author

      Assuming you’re on a Mac, if you type this into Terminal: curl -I http://s3.amazonaws.com, what are you getting?

      Also, in Transmit, open up the transcript window (Window > Transcript) and then try connecting. What is the log output?

      As a side note, it sounds like your hostname, access and secret keys are all correct, because you’d be getting a different error if they weren’t. It might be a network, routing or firewall issue.

      Reply
      1. Lorelai

        I was getting the same error but just downloaded the new transmit and there is a new sub tab specifically to connect to s3. If you just try connecting via FTP it wont connect.

        Reply

Leave a Reply

Your email address will not be published. Required fields are marked *