Skip to content
Draft
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
13 changes: 13 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "pulumi-codespace",
"build": {
"dockerfile": "../.gitpod.Dockerfile",
},
"postCreateCommand": "make install",
"remoteUser": "gitpod",
"containerEnv": {
"PULUMI_ACCESS_TOKEN": "${localEnv:PULUMI_ACCESS_TOKEN}",
"PULUMI_TEST_ORG": "${localEnv:PULUMI_TEST_ORG}"
},
"extensions": ["golang.go", "ms-dotnettools.csharp", "ms-python.python", "formulahendry.dotnet-test-explorer"],
}
21 changes: 21 additions & 0 deletions .gitpod.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM gitpod/workspace-full

USER root

# Install latest pulumictl
RUN wget -O pulumictl.tar.gz $(curl -s https://api.github.com/repos/pulumi/pulumictl/releases/latest | jq -rc '.assets | map(select(.name | contains("linux-amd64"))) | .[] .browser_download_url') \
&& tar xzf pulumictl.tar.gz -C /usr/bin pulumictl \
&& rm -f pulumictl.tar.gz \
&& pulumictl version

USER gitpod

# Install .NET SDK (Current channel)
# Source: https://docs.microsoft.com/dotnet/core/install/linux-scripted-manual#scripted-install
RUN mkdir -p /home/gitpod/dotnet && curl -fsSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel Current --install-dir /home/gitpod/dotnet
ENV DOTNET_ROOT=/home/gitpod/dotnet
ENV PATH=$PATH:/home/gitpod/dotnet

# Install latest Pulumi CLI
RUN curl -fsSL https://get.pulumi.com/ | bash;
ENV PATH=$PATH:/home/gitpod/.pulumi/bin/
21 changes: 21 additions & 0 deletions .gitpod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
image:
file: .gitpod.Dockerfile

tasks:
- init: make install

vscode:
extensions:
- "golang.go"
- "ms-dotnettools.csharp"
- "ms-python.python"
- "formulahendry.dotnet-test-explorer"

# See: https://www.gitpod.io/docs/prebuilds/#configure-the-github-app
github:
prebuilds:
master: true
branches: true
pullRequests: true
pullRequestsFromForks: true
addCheck: true
8 changes: 8 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"go.buildTags": "all",
"go.testTimeout": "1h",
"gopls": {
// Experimental but seems to work and means we don't need a vscode instance per go.mod file.
"experimentalWorkspaceModule": true,
},
}
3 changes: 3 additions & 0 deletions examples/go-cognito/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: apigateway-go-cognito
runtime: go
description: Apigateway Cognito authorizer example
11 changes: 11 additions & 0 deletions examples/go-cognito/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module apigateway-go-cognito

go 1.14

require (
github.com/pulumi/pulumi-aws-apigateway/sdk v0.0.2
github.com/pulumi/pulumi-aws/sdk/v4 v4.22.0
github.com/pulumi/pulumi/sdk/v3 v3.13.2
)

replace github.com/pulumi/pulumi-aws-apigateway/sdk => ../../sdk
File renamed without changes.
41 changes: 41 additions & 0 deletions examples/go-cognito/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package main

import (
apigateway "github.com/pulumi/pulumi-aws-apigateway/sdk/go/apigateway"
"github.com/pulumi/pulumi-aws/sdk/v4/go/aws/cognito"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Create a user pool to contain authorized users of the API
userPool, err := cognito.NewUserPool(ctx, "user-pool", &cognito.UserPoolArgs{})
if err != nil {
return err
}

localPath := "www"
restAPI, err := apigateway.NewRestAPI(ctx, "api", &apigateway.RestAPIArgs{
Routes: []apigateway.RouteArgs{
{
Path: "/",
LocalPath: &localPath,
// Define an authorizer which uses Cognito to validate the token from the Authorization header
Authorizers: []apigateway.AuthorizerArgs{
{
ParameterName: "Authorization",
IdentitySource: []string{"method.request.header.Authorization"},
ProviderARNs: []pulumi.StringInput{userPool.Arn},
},
},
},
},
})
if err != nil {
return err
}

ctx.Export("url", restAPI.Url)
return nil
})
}
File renamed without changes.
3 changes: 3 additions & 0 deletions examples/go-integration/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: apigateway-go-integration
runtime: go
description: Apigateway integration example
11 changes: 11 additions & 0 deletions examples/go-integration/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module apigateway-go-integration

go 1.14

require (
github.com/pulumi/pulumi-aws-apigateway/sdk v0.0.2
github.com/pulumi/pulumi-aws/sdk/v4 v4.22.0
github.com/pulumi/pulumi/sdk/v3 v3.13.2
)

replace github.com/pulumi/pulumi-aws-apigateway/sdk => ../../sdk
355 changes: 355 additions & 0 deletions examples/go-integration/go.sum

Large diffs are not rendered by default.

31 changes: 31 additions & 0 deletions examples/go-integration/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package main

import (
apigateway "github.com/pulumi/pulumi-aws-apigateway/sdk/go/apigateway"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Define an endpoint that proxies HTTP requests to https://www.google.com.
getMethod := apigateway.MethodGET
restAPI, err := apigateway.NewRestAPI(ctx, "api", &apigateway.RestAPIArgs{
Routes: []apigateway.RouteArgs{
{
Path: "/",
Method: &getMethod,
Target: apigateway.TargetArgs{
Type: apigateway.IntegrationType_Http_proxy,
Uri: pulumi.String("https://www.google.com"),
},
},
},
})
if err != nil {
return err
}

ctx.Export("url", restAPI.Url)
return nil
})
}
3 changes: 3 additions & 0 deletions examples/go-lambda-auth/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: apigateway-go-lambda-auth
runtime: go
description: Apigateway Lambda authorizer example
14 changes: 14 additions & 0 deletions examples/go-lambda-auth/authorizer/handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
def handler(event, context):
# --- Add your own custom authorization logic here. ---
print(event)
return {
"principalId": "my-user",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Action": "execute-api:Invoke",
"Effect": "Allow" if event["headers"]["Authorization"] == "goodToken" else "Deny",
"Resource": event["methodArn"],
}]
},
}
11 changes: 11 additions & 0 deletions examples/go-lambda-auth/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module apigateway-go-lambda-auth

go 1.14

require (
github.com/pulumi/pulumi-aws-apigateway/sdk v0.0.4
github.com/pulumi/pulumi-aws/sdk/v4 v4.22.0
github.com/pulumi/pulumi/sdk/v3 v3.13.2
)

replace github.com/pulumi/pulumi-aws-apigateway/sdk => ../../sdk
Loading