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 upNew to Pulumi?
Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.
Sign upThank you for your feedback!
If you have a question about how to use Pulumi, reach out in Community Slack.
Open an issue on GitHub to report a problem or suggest an improvement.