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

docs: add an EC2 example with raw pulumi code #1237

Merged
merged 1 commit into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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",
Comment on lines +8 to +9
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is this pointing to?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably be removed but this lets you deploy using the local version of sst.

"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,
};
},
});