Skip to content

Instantly share code, notes, and snippets.

View cnunciato's full-sized avatar

Christian Nunciato cnunciato

View GitHub Profile
#!/bin/bash
tokens=(
aws:lambda/function:Function
aws:s3/bucket:Bucket
aws:iam/role:Role
aws:ec2/instance:Instance
aws:rds/instance:Instance
aws:ec2/securityGroup:SecurityGroup
aws:ec2/vpc:Vpc
@cnunciato
cnunciato / helper.sh
Created January 4, 2024 23:08
pulumi new helper
pnew() {
local project_template="$1"
local project_home="${HOME}/Projects/dev/pulumi"
local project_name="${1}-$(head -n 4096 /dev/urandom | openssl sha1 | awk "{print \$2}" | cut -c1-7)"
local project_dir="${project_home}/${project_name}"
mkdir -p "$project_dir" && cd "$project_dir"
pulumi new "$project_template"
}
@cnunciato
cnunciato / Pulumi.yaml
Created October 28, 2023 15:32
A Pulumi program as a Gist
name: ${PROJECT}
description: ${DESCRIPTION}
runtime:
name: nodejs
options:
typescript: false
template:
description: A minimal AWS JavaScript Pulumi program
important: true
config:
@cnunciato
cnunciato / main.go
Last active January 12, 2023 19:59
Converting a pulumi.IDOutput to a string and using it in a lookup function
package main
import (
"fmt"
"github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ec2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
➜ depth .
.
├ fmt
├ github.com/pulumi/pulumi-azure-native-sdk/resources
├ context
├ fmt
├ os
├ reflect
├ regexp
├ strconv
@cnunciato
cnunciato / Pulumi.yaml
Last active December 9, 2022 01:38
Hello! I'm a publicly accessible Pulumi project template.
# Configure project names and descriptions with values obtained from `pulumi new`.
name: ${PROJECT}
description: ${DESCRIPTION}
runtime: yaml
# Define the template's configuration settings.
template:
description: A simple static website on Amazon S3
config:
aws:region:
@cnunciato
cnunciato / index.ts
Created August 26, 2022 22:26
Create an S3 website with Pulumi and CloudFlare DNS (with HTTPS)
import * as aws from "@pulumi/aws";
import * as cloudflare from "@pulumi/cloudflare";
const domain = "pulumibook.info";
const subdomain = "my-awesome-website";
// Make a bucket.
const bucket = new aws.s3.Bucket("my-bucket", {
bucket: `${subdomain}.${domain}`,
acl: aws.s3.CannedAcl.PublicRead,
import * as aws from "@pulumi/aws";
const lambda = new aws.lambda.CallbackFunction("my-function", {
callback: () => {
console.log("Hello, world!");
},
});
export const { id } = lambda;
@cnunciato
cnunciato / index.ts
Last active June 21, 2022 20:33
TypeScript component encapsulating a StaticWebsite
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
interface StaticWebsiteArgs {
domainName: string;
defaultDocument?: string;
}
/**
@cnunciato
cnunciato / index.ts
Last active June 21, 2022 20:33
TypeScript Class encapsulating a StaticWebsite
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
/**
* The StaticWebsite class provisions a cloud storage bucket
* and a content-delivery network for it, exposing the name of
* the storage bucket and the CDN URL for later use.
*/
export class StaticWebsite {
private bucket: aws.s3.Bucket;