Skip to content
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
23 changes: 14 additions & 9 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"features": {
"ghcr.io/devcontainers/features/aws-cli:1": {
"version": "1.1.4",
"resolved": "ghcr.io/devcontainers/features/aws-cli@sha256:1f93c8315b7a6d76982ebb2269f8b0d50413fc0f965c032edf4aee0caceb73ef",
"integrity": "sha256:1f93c8315b7a6d76982ebb2269f8b0d50413fc0f965c032edf4aee0caceb73ef"
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "2.16.1",
"resolved": "ghcr.io/devcontainers/features/docker-in-docker@sha256:ce078b7bf7d9ef3bcb9813b32103795d8d72172446890b64772cbe1dec6baafd",
Expand All @@ -10,15 +15,15 @@
"resolved": "ghcr.io/devcontainers/features/go@sha256:f5ef402a387201cf1ace38ea16c176612d61107c0fcd58da1bb84493cd93f6a1",
"integrity": "sha256:f5ef402a387201cf1ace38ea16c176612d61107c0fcd58da1bb84493cd93f6a1"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "1.7.1",
"resolved": "ghcr.io/devcontainers/features/node@sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6",
"integrity": "sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6"
"ghcr.io/devcontainers/features/node:2": {
"version": "2.0.0",
"resolved": "ghcr.io/devcontainers/features/node@sha256:fedd4c11f7adfb64283b578dddc7da906728daa25fa293351c9d913231acf12f",
"integrity": "sha256:fedd4c11f7adfb64283b578dddc7da906728daa25fa293351c9d913231acf12f"
},
"ghcr.io/joshuanianji/devcontainer-features/mount-pnpm-store:1": {
"version": "1.0.2",
"resolved": "ghcr.io/joshuanianji/devcontainer-features/mount-pnpm-store@sha256:32f78bc711aecc2b1479143a4412461b4075c61f0d4776e74265890099a3c7f6",
"integrity": "sha256:32f78bc711aecc2b1479143a4412461b4075c61f0d4776e74265890099a3c7f6"
"ghcr.io/devcontainers/features/python:1": {
"version": "1.8.0",
"resolved": "ghcr.io/devcontainers/features/python@sha256:fbcad6955caeecc5ad3f7886baf652e25cba5225a6c4c2287c536de2e5607511",
"integrity": "sha256:fbcad6955caeecc5ad3f7886baf652e25cba5225a6c4c2287c536de2e5607511"
},
"ghcr.io/jungaretti/features/make:1": {
"version": "1.0.1",
Expand All @@ -31,4 +36,4 @@
"integrity": "sha256:87a4d7750a596a5db034ba8508782f31aebdc2ffe955c66aaecb33d9de2ecdae"
}
}
}
}
12 changes: 7 additions & 5 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,22 @@
// checksum mismatch on 2026-05-02).
"golangciLintVersion": "2.11.4"
},
"ghcr.io/devcontainers/features/node:1": {
"ghcr.io/devcontainers/features/node:2": {
"nodeGypDependencies": true,
"version": "18" // Match version from Dockerfile
"version": "25" // Match version from Makefile REACT_FRONTEND_NODE_VERSION
},
// Shares a pnpm store between devcontainers.
// https://github.com/joshuanianji/devcontainer-features/tree/main/src/mount-pnpm-store
"ghcr.io/joshuanianji/devcontainer-features/mount-pnpm-store:1": {},
"ghcr.io/jungaretti/features/make:1": {},
"ghcr.io/rocker-org/devcontainer-features/apt-packages:1": {
// mariadb-client package provides the `mysql` command for
// development / debugging purposes (not an app dependeny).
// bash-completion is useful for entering git commands in the devcontainer
// and our .bashrc requires this.
"packages": "mariadb-client,bash-completion"
},
"ghcr.io/devcontainers/features/aws-cli:1": {},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.12",
"installTools": false
}
},
"customizations": {
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## Build API backend.
# Keep in sync with /workspace/server/src/go.mod.
# Keep in sync with server/src/go.mod.
FROM golang:1.25.8 AS build-api
WORKDIR /workspace/server/src
COPY go.work /workspace/
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.cli
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1

# Stage 1: build the CLI binary.
# Keep in sync with /workspace/server/src/go.mod.
# Keep in sync with server/src/go.mod.
FROM golang:1.25.8 AS builder

WORKDIR /workspace/cli
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ NVM_SCRIPT := $(shell \
# * package.json
# * all Dockerfiles
# * .github/workflows/main.yml
# * devcontainer.json `ghcr.io/devcontainers/features/node` feature
VUE_FRONTEND_NODE_VERSION := 16
REACT_FRONTEND_NODE_VERSION := 25
PNPM_VERSION := 10.32.1
Expand Down
2 changes: 1 addition & 1 deletion cli/go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/dxe/adb/cli

// Keep in sync with /workspace/server/src/go.mod.
// Keep in sync with server/src/go.mod.
go 1.25.8

require (
Expand Down
2 changes: 1 addition & 1 deletion go.work
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Keep in sync with /workspace/server/src/go.mod.
// Keep in sync with server/src/go.mod.
go 1.25.8

use (
Expand Down
8 changes: 8 additions & 0 deletions go.work.sum
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,14 @@ github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0Tx
github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=
github.com/cockroachdb/cockroach-go/v2 v2.1.1 h1:3XzfSMuUT0wBe1a3o5C0eOTcArhmmFAg2Jzh/7hhKqo=
github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM=
github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsPEmzLso=
github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8=
github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA=
github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
Expand All @@ -127,6 +129,7 @@ github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwB
github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g=
github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98=
github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=
github.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
Expand All @@ -136,6 +139,7 @@ github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6
github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4=
github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=
github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=
github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8=
github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
Expand All @@ -145,6 +149,7 @@ github.com/gabriel-vasile/mimetype v1.4.1 h1:TRWk7se+TOjCYgRth7+1/OYLNiRNIotknkF
github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M=
github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=
github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
Expand Down Expand Up @@ -283,6 +288,7 @@ github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99
github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79 h1:V7x0hCAgL8lNGezuex1RW1sh7VXXCqfw8nXZti66iFg=
github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79/go.mod h1:xF/KoXmrRyahPfo5L7Szb5cAAUl53dMWBh9cMruGEZg=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
Expand Down Expand Up @@ -316,6 +322,7 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
go.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=
go.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
Expand Down Expand Up @@ -373,6 +380,7 @@ google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04
google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20260427160629-7cedc36a6bc4 h1:vZSynqmtxmRfYL0QaV3UUWE/8BC6aqyIx+D+enkxybM=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:6TABGosqSqU2l1+fJ3jdvOYPPVryeKybxYF0cCZkTBE=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20260523011958-0a33c5d7ca68 h1:oLrrfrPtevKV9DqgGDKHUxMfolE7ikepJ9j2vNQbGt8=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:6TABGosqSqU2l1+fJ3jdvOYPPVryeKybxYF0cCZkTBE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
Expand Down
2 changes: 2 additions & 0 deletions jobs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bin/
.aws-sam/
23 changes: 23 additions & 0 deletions jobs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FUNCTIONS := hello-world
REGION := us-west-2

.PHONY: build clean deploy deps $(FUNCTIONS)

deps:
pip install -r requirements.txt

build: $(FUNCTIONS)

$(FUNCTIONS):
mkdir -p bin/$@
GOWORK=off GOOS=linux GOARCH=arm64 CGO_ENABLED=0 \
go build -tags lambda.norpc -o bin/$@/bootstrap ./functions/$@
cd bin/$@ && zip -j ../$@.zip bootstrap

clean:
rm -rf bin .aws-sam

deploy: build
sam deploy --parameter-overrides \
"SmtpUser=$$(aws ssm get-parameter --name smtp_user --with-decryption --region $(REGION) --query Parameter.Value --output text)" \
"SmtpPass=$$(aws ssm get-parameter --name smtp_pass --with-decryption --region $(REGION) --query Parameter.Value --output text)"
56 changes: 56 additions & 0 deletions jobs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# jobs

AWS Lambda jobs for ADB, deployed with [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/).

## Prerequisites

- Go (preinstalled in the devcontainer)
- Python + pip (preinstalled in the devcontainer)
- AWS credentials with deploy permissions for `us-west-2`
- SSM parameters `smtp_user` and `smtp_pass` set in `us-west-2`

Install Python dependencies (currently just `aws-sam-cli`):

```bash
make deps
```

Log in with the AWS CLI:

```bash
aws login
```

Note: the above command works for IAM users, not SSO / Identity Center users,
and uses your console credentials rather than storing a long-term IAM access
key. You must re-run it every time your console session expires.

## Functions

- `hello-world` — sends a "Hello World" email to `ataylor@directactioneverywhere.com`.

## Build

Cross-compiles each function to a `bootstrap` binary and zips it into `bin/`:

```bash
make build
```

## Deploy

```bash
make deploy
```

## Invoke (smoke test)

```bash
aws lambda invoke --function-name jobs-hello-world --region us-west-2 /dev/stdout
```

## Clean

```bash
make clean
```
82 changes: 82 additions & 0 deletions jobs/functions/hello-world/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package main

import (
"context"
"crypto/tls"
"fmt"
"net"
"net/smtp"
"os"
"time"

"github.com/aws/aws-lambda-go/lambda"
)

// TODO: make these configurable via environment / SSM once additional jobs need different SMTP targets.
const (
smtpHost = "email-smtp.us-west-2.amazonaws.com"
smtpPort = "465"
toAddress = "ataylor@directactioneverywhere.com"
fromAddress = "tech-noreply@directactioneverywhere.com"
fromName = "DxE Reporting"
emailSubject = "Hello World"
emailBody = "Hello World!"
)

func handler(ctx context.Context) (string, error) {
user := os.Getenv("SMTP_USER")
pass := os.Getenv("SMTP_PASS")
if user == "" || pass == "" {
return "", fmt.Errorf("SMTP_USER and SMTP_PASS must be set")
}

msg := []byte(
"To: " + toAddress + "\r\n" +
"From: \"" + fromName + "\" <" + fromAddress + ">\r\n" +
"Subject: " + emailSubject + "\r\n" +
"\r\n" +
emailBody + "\r\n",
)

dialer := &tls.Dialer{
NetDialer: &net.Dialer{Timeout: 10 * time.Second},
Config: &tls.Config{ServerName: smtpHost, MinVersion: tls.VersionTLS13},
}
conn, err := dialer.DialContext(ctx, "tcp", smtpHost+":"+smtpPort)
if err != nil {
return "", fmt.Errorf("tls dial: %w", err)
}
defer conn.Close()

client, err := smtp.NewClient(conn, smtpHost)
if err != nil {
return "", fmt.Errorf("smtp client: %w", err)
}
defer client.Quit()

if err := client.Auth(smtp.PlainAuth("", user, pass, smtpHost)); err != nil {
return "", fmt.Errorf("smtp auth: %w", err)
}
if err := client.Mail(fromAddress); err != nil {
return "", fmt.Errorf("smtp mail: %w", err)
}
if err := client.Rcpt(toAddress); err != nil {
return "", fmt.Errorf("smtp rcpt: %w", err)
}
w, err := client.Data()
if err != nil {
return "", fmt.Errorf("smtp data: %w", err)
}
if _, err := w.Write(msg); err != nil {
return "", fmt.Errorf("smtp write: %w", err)
}
if err := w.Close(); err != nil {
return "", fmt.Errorf("smtp close: %w", err)
}

return "sent", nil
}

func main() {
lambda.Start(handler)
}
6 changes: 6 additions & 0 deletions jobs/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module github.com/dxe/adb/jobs

// Keep in sync with server/src/go.mod
go 1.25.8

require github.com/aws/aws-lambda-go v1.50.0
10 changes: 10 additions & 0 deletions jobs/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
github.com/aws/aws-lambda-go v1.50.0 h1:0GzY18vT4EsCvIyk3kn3ZH5Jg30NRlgYaai1w0aGPMU=
github.com/aws/aws-lambda-go v1.50.0/go.mod h1:dpMpZgvWx5vuQJfBt0zqBha60q7Dd7RfgJv23DymV8A=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Binary file added jobs/hello-world
Binary file not shown.
1 change: 1 addition & 0 deletions jobs/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aws-sam-cli==1.161.0
8 changes: 8 additions & 0 deletions jobs/samconfig.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version = 0.1

[default.deploy.parameters]
stack_name = "jobs"
region = "us-west-2"
capabilities = "CAPABILITY_IAM"
resolve_s3 = true
confirm_changeset = false
Loading
Loading