1. Answers
  2. Deploy MinIO on Amazon EC2 using Pulumi

How do I use MinIO with Amazon EC2?

In this guide, we will deploy MinIO, a high-performance object storage system, on an Amazon EC2 instance using Pulumi. We will create an EC2 instance, install Docker, and run a MinIO container on it.

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

// Create a new security group for the EC2 instance
const securityGroup = new aws.ec2.SecurityGroup("minio-sg", {
    description: "Allow HTTP and SSH",
    ingress: [
        { protocol: "tcp", fromPort: 22, toPort: 22, cidrBlocks: ["0.0.0.0/0"] },  // SSH
        { protocol: "tcp", fromPort: 9000, toPort: 9000, cidrBlocks: ["0.0.0.0/0"] } // MinIO
    ],
    egress: [
        { protocol: "-1", fromPort: 0, toPort: 0, cidrBlocks: ["0.0.0.0/0"] }
    ],
});

// Create an EC2 instance to run MinIO
const instance = new aws.ec2.Instance("minio-instance", {
    instanceType: "t2.micro",
    ami: "ami-0c55b159cbfafe1f0", // Amazon Linux 2 AMI
    securityGroups: [securityGroup.name],
    userData: `#!/bin/bash
    sudo yum update -y
    sudo amazon-linux-extras install docker -y
    sudo service docker start
    sudo usermod -a -G docker ec2-user
    docker run -d -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" minio/minio server /data
    `,
    tags: {
        Name: "minio-server",
    },
});

// Export the public IP of the instance
export const publicIp = instance.publicIp;
export const publicHostName = instance.publicDns;

Key Points

  • Security Group: We create a security group to allow SSH access and HTTP access on port 9000 for MinIO.
  • EC2 Instance: We create an EC2 instance using the Amazon Linux 2 AMI and install Docker on it.
  • User Data Script: The EC2 instance runs a user data script that installs Docker, starts the Docker service, and runs a MinIO container.
  • Outputs: We export the public IP and DNS of the EC2 instance for easy access.

Summary

We have successfully deployed MinIO on an Amazon EC2 instance using Pulumi. We created a security group, an EC2 instance, installed Docker, and ran a MinIO container on it. The public IP and DNS of the instance are exported for accessing the MinIO server.

Deploy this code

Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.

Sign up

New to Pulumi?

Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.

Sign up