Create a build from Amazon S3 bucket

Last updated: May 29, 2026

This guide explains how to create a build using files stored in an Amazon S3 bucket. This approach is useful for large builds or when you want to manage your build files in your own cloud storage.

Prerequisites

Before you begin, ensure you have:

  • An Amazon Web Services (AWS) account with access to S3

  • An S3 bucket containing your game server build files

  • Appropriate IAM permissions to configure bucket access

  • Your game server executable and all required files uploaded to the bucket

Configure bucket access

Step 1: Create the IAM User

  1. Sign in to the AWS IAM Console.

  2. In the left navigation pane, click Users and then click Create user.

  3. Enter a User name (e.g., s3-bucket-reader).

  4. Keep "Provide user access to the AWS Management Console" unchecked (since this is for programmatic use only).

  5. Click Next.

Step 2: Grant Specific Bucket Permissions

To ensure the user can only see one bucket, you must create a "Customer Managed Policy."

  1. On the Set permissions page, select Attach policies directly.

  2. Click Create policy (this opens a new tab).

  3. Click the JSON tab and paste the following policy. Replace your-bucket-name with your actual bucket name:

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

Note: In AWS, listing a bucket and reading files are separate actions. ListBucket applies to the bucket itself, while GetObject applies to the contents (/*).

  1. Click Next, give the policy a name (e.g., ReadSpecificBucketOnly), and click Create policy.

  2. Go back to the Create user tab, click the Refresh button next to the search bar, search for your new policy name, and check the box next to it.

  3. Click Next, then Create user

Step 3: Generate Access & Secret Keys

  1. In the Users list, click on the name of the user you just created.

  2. Navigate to the Security credentials tab.

  3. Scroll down to Access keys and click Create access key.

  4. Select Application running outside AWS as your use case and click Next.

  5. (Optional) Add a description tag and click Create access key.

  6. Copy your Access Key ID and Secret Access Key.

  7. Click Download .csv file to keep a backup. You will never be able to see the Secret Key again after leaving this screen

Prepare your bucket

Organize your build files in the bucket:

s3://your-bucket-name/
└── builds/
    └── my-game-server/
        ├── server.x86_64
        ├── server_Data/
        └── config/

Create the build

Using the Multiplay Dashboard

  1. In the Multiplay Dashboard, open Multiplay Hosting.

  2. Select Builds.

  3. Select Create build.

  4. Fill in the build details:Give the new build a name.Select the operating system.As the Upload method, select Amazon S3.

  5. Select Next.

  6. Fill in the Amazon S3 bucket credentials:Enter the Bucket S3 URI.Enter the Access key.Enter the Secret key.Give the new build a version name or leave empty if you would like this update to automatically be given a version name.

  7. Select Finish

Using the API

You can create a S3-based build using the Create build API.

Step 1 - Create a build

curl -X POST -H "Authorization: Bearer <API_KEY>" -H "Content-Type: application/json" \
  -d '{"buildName": "Dev Build A", "osFamily": "LINUX", "buildType": "S3"}' \
  https://api.multiplay.dev/v4/projects/{projectId}/environments/{environmentId}/builds

The response will be in the following format. Make a note of the buildID as you'll need that on the next API call.

{
    "buildID":200098,
    "buildName":"Dev Build A",
    "buildType":"S3",
    "buildVersionName":"",
    "cfv":0,
    "osFamily":"LINUX",
    "syncStatus":"PENDING",
    "updated":"2026-04-01T13:36:41Z"
}

Step 2 - Create a version

curl -X POST -H "Authorization: Bearer <API_KEY>" -H "Content-Type: application/json" \
  -d '{"buildVersionName": "<VERSION_NAME>", "s3": {"s3URI": "s3://<S3_BUCKET_PATH>", "accessKey": "<S3_KEY_ID>", "secretKey":"<S3_SECRET_KEY>"}}' \
  https://api.multiplay.dev/v4/projects/{projectId}/environments/{environmentId}/builds/{buildId}/versions

Where the <PLACEHOLDER> values above are replaced as follows:

Update build files

To update your build:

  1. Upload the new files to your S3 bucket.

  2. Create a new build version in Multiplay Hosting.

  3. The new version will sync with the updated files.

Best practices

  • Use versioned folders in your bucket (e.g., builds/v1.0.0/, builds/v1.1.0/)

  • Enable bucket versioning for rollback capabilities

  • Use S3 lifecycle policies to manage old build versions

  • Consider using S3 Intelligent-Tiering for cost optimization

  • Enable CloudTrail logging for security auditing

Troubleshooting

Build sync fails with access denied

  • Verify the bucket policy is correctly configured

  • Check that the IAM permissions are properly set

  • Ensure the bucket region is correctly specified

  • Verify there are no S3 Block Public Access settings preventing access

Slow build sync

Large builds may take time to sync. Consider:

  • Compressing assets where possible

  • Removing unnecessary files

  • Using S3 buckets in regions close to your deployment regions

  • Enabling S3 Transfer Acceleration for faster uploads

Additional resources

  • Amazon S3 documentation

  • Build API workflow