Skip to content
This repository has been archived by the owner on Oct 21, 2024. It is now read-only.

Commit

Permalink
Add an EC2 example with raw pulumi code (#1237)
Browse files Browse the repository at this point in the history
  • Loading branch information
agamm authored Oct 11, 2024
1 parent b259133 commit 45af1d1
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
20 changes: 20 additions & 0 deletions examples/aws-ec2-pulumi/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "aws-ec2-pulumi",
"version": "1.0.0",
"description": "",
"type": "module",
"main": "index.js",
"scripts": {
"deploy": "go run ../../cmd/sst deploy",
"remove": "go run ../../cmd/sst remove",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"sst": "3.0.1-7"
},
"dependencies": {
}
}
59 changes: 59 additions & 0 deletions examples/aws-ec2-pulumi/sst.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/// <reference path="./.sst/platform/config.d.ts" />

/**
* ## EC2 (using Pulumi) example
*
* Use raw pulumi code to create an EC2 instance.
*/
export default $config({
app(input) {
return {
name: "aws-ec2-pulumi",
home: "aws",
removal: input?.stage === "production" ? "retain" : "remove",
};
},
async run() {
// Notice you don't need to import pulumi, it is already part of sst.
const securityGroup = new aws.ec2.SecurityGroup("web-secgrp", {
ingress: [
{
protocol: "tcp",
fromPort: 80,
toPort: 80,
cidrBlocks: ["0.0.0.0/0"],
},
],
});

// Find the latest Ubuntu AMI
const ami = aws.ec2.getAmi({
filters: [
{
name: "name",
values: ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"],
},
],
mostRecent: true,
owners: ["099720109477"], // Canonical
});

// User data to set up a simple web server
const userData = `#!/bin/bash
echo "Hello, World!" > index.html
nohup python3 -m http.server 80 &`;

// Create an EC2 instance
const server = new aws.ec2.Instance("web-server", {
instanceType: "t2.micro",
ami: ami.then((ami) => ami.id),
userData: userData,
vpcSecurityGroupIds: [securityGroup.id],
associatePublicIpAddress: true,
});

return {
app: server.publicIp,
};
},
});

0 comments on commit 45af1d1

Please sign in to comment.