Skip to main content
Skip to main content
Edit this page

How to create an AWS IAM user and S3 bucket

This guide shows you how you can set up an IAM user and S3 bucket in AWS, a prerequisite step for taking backups to S3 or configuring ClickHouse to store data on S3

Create an AWS IAM user

In this procedure, we'll be creating a service account user, not a login user.

  1. Log into the AWS IAM Management Console.

  2. In the Users tab, select Create user

  1. Enter a user-name
  1. Select Next
  1. Select Next
  1. Select Create user

The user is now created. Click on the newly created user

  1. Select Create access key
  1. Select Application running outside AWS
  1. Select Create access key
  1. Download your access key and secret as a .csv for use later

Create an S3 bucket

  1. In the S3 bucket section, select Create bucket
  1. Enter a bucket name, leave other options default
Note

The bucket name must be unique across AWS, not just the organization, or it will emit an error.

  1. Leave Block all Public Access enabled; public access is not needed.
  1. Select Create Bucket at the bottom of the page
  1. Select the link, copy the ARN, and save it for use when configuring the access policy for the bucket
  1. Once the bucket has been created, find the new S3 bucket in the S3 buckets list and select the bucket name which will take you to the page shown below:
  1. Select Create folder

  2. Enter a folder name that will be the target for the ClickHouse S3 disk or backup and select Create folder at the bottom of the page

  1. The folder should now be visible on the bucket list
  1. Select the checkbox for the new folder and click on Copy URL. Save the URL for use in the ClickHouse storage configuration in the next section.
  1. Select the Permissions tab and click on the Edit button in the Bucket Policy section
  1. Add a bucket policy, example below
{
    "Version": "2012-10-17",
    "Id": "Policy123456",
    "Statement": [
        {
            "Sid": "abc123",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::782985192762:user/docs-s3-user"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::ch-docs-s3-bucket",
                "arn:aws:s3:::ch-docs-s3-bucket/*"
            ]
        }
    ]
}
ParameterDescriptionExample Value
VersionVersion of the policy interpreter, leave as-is2012-10-17
SidUser-defined policy idabc123
EffectWhether user requests will be allowed or deniedAllow
PrincipalThe accounts or user that will be allowedarn:aws:iam::782985192762:user/docs-s3-user
ActionWhat operations are allowed on the buckets3:*
ResourceWhich resources in the bucket will operations be allowed in"arn:aws:s3:::ch-docs-s3-bucket", "arn:aws:s3:::ch-docs-s3-bucket/*"
Note

You should work with your security team to determine the permissions to be used, consider these as a starting point. For more information on Policies and settings, refer to AWS documentation: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html

  1. Save the policy configuration