Skip to content

Commit

Permalink
create terraform layer in all supported regions
Browse files Browse the repository at this point in the history
  • Loading branch information
ianic committed Oct 3, 2022
1 parent 02aa58b commit 9c03a61
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 133 deletions.
2 changes: 1 addition & 1 deletion cli/controller/setup_stack_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ Resources:
MemorySize: 1769
Architectures: ['arm64']
Layers:
- arn:aws:lambda:{{.Region}}:477361877445:layer:terraform-1-3-1:1
- arn:aws:lambda:{{.Region}}:477361877445:layer:terraform-1_3_1:1
Code:
S3Bucket: {{.Bucket}}
S3Key: {{.S3Key}}
Expand Down
20 changes: 5 additions & 15 deletions cli/controller/setup_test.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package controller

import (
"io/ioutil"
"flag"
"testing"

"github.com/sergi/go-diff/diffmatchpatch"
"github.com/mantil-io/mantil/kit/testutil"
"github.com/stretchr/testify/require"
)

var update = flag.Bool("update", false, "update expected files")

func TestRenderTemplate(t *testing.T) {
td := stackTemplateData{
Name: "mantil-setup",
Expand All @@ -23,17 +25,5 @@ func TestRenderTemplate(t *testing.T) {
s := &Setup{}
actual, err := s.renderStackTemplate(td)
require.NoError(t, err)
expected, err := ioutil.ReadFile("testdata/template.yml")
require.NoError(t, err)
equalStrings(t, string(expected), string(actual))
}

func equalStrings(t *testing.T, expected, actual string) {
if expected != actual {
t.Logf("diff of strings")
dmp := diffmatchpatch.New()
diffs := dmp.DiffMain(expected, actual, false)
t.Logf("diff: \n%s", dmp.DiffPrettyText(diffs))
t.Fatalf("failed")
}
testutil.EqualFiles(t, "testdata/template.yml", string(actual), *update)
}
2 changes: 1 addition & 1 deletion cli/controller/testdata/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ Resources:
MemorySize: 1769
Architectures: ['arm64']
Layers:
- arn:aws:lambda:region:477361877445:layer:terraform-1-3-1:1
- arn:aws:lambda:region:477361877445:layer:terraform-1_3_1:1
Code:
S3Bucket: bucket
S3Key: bucket-key
Expand Down
22 changes: 19 additions & 3 deletions kit/testutil/testutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,25 @@ import (
)

func EqualFiles(t *testing.T, expected, actual string, update bool) {
actualContent, err := ioutil.ReadFile(actual)
if err != nil {
t.Fatalf("failed reading actual file: %s", err)
var actualContent []byte
if _, err := os.Stat(actual); err == nil {
// actual file exists
actualContent, err = ioutil.ReadFile(actual)
if err != nil {
t.Fatalf("failed reading actual file: %s", err)
}
} else {
actualContent = []byte(actual)
file, err := ioutil.TempFile("", "")
if err != nil {
t.Fatal(err)
}
if _, err := file.Write(actualContent); err != nil {
t.Fatal(err)
}

actual = file.Name()
defer os.Remove(file.Name())
}

if update {
Expand Down
4 changes: 2 additions & 2 deletions node/terraform/modules/functions-node/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ locals {
memory_size = 1769
timeout = 900
architecture = "arm64"
layers = ["arn:aws:lambda:${var.region}:477361877445:layer:terraform-1-3-1:1"]
layers = ["arn:aws:lambda:${var.region}:477361877445:layer:terraform-1_3_1:1"]
policy = data.aws_iam_policy_document.deploy.json
},
"security" = {
Expand All @@ -23,7 +23,7 @@ locals {
memory_size = 1769
timeout = 900
architecture = "arm64"
layers = ["arn:aws:lambda:${var.region}:477361877445:layer:terraform-1-3-1:1"]
layers = ["arn:aws:lambda:${var.region}:477361877445:layer:terraform-1_3_1:1"]
policy = data.aws_iam_policy_document.destroy.json
}
"auth" = {
Expand Down
102 changes: 0 additions & 102 deletions scripts/aws/add_layer_version/main.go

This file was deleted.

40 changes: 31 additions & 9 deletions scripts/create_terraform_layer.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash -ex
#!/usr/bin/env bash -e

version="1.3.1"

Expand All @@ -17,12 +17,34 @@ cd $tmp
zip -r layer.zip bin/
unzip -l $tmp/layer.zip

layer_name=terraform-"${version//./-}"
layer_name=terraform-"${version//./_}"

aws lambda publish-layer-version \
--layer-name "$layer_name" \
--zip-file "fileb://$tmp/layer.zip" \
--compatible-architectures "arm64" \
--compatible-runtimes "provided.al2" \
--description "terraform $version" \
--no-cli-pager
regions=(ap-south-1 ap-southeast-1 ap-southeast-2 ap-northeast-1 eu-central-1 eu-west-1 eu-west-2 us-east-1 us-east-2 us-west-2)

for region in ${regions[@]}; do

export AWS_REGION=$region

echo publishing layer in $region ...

aws lambda publish-layer-version \
--layer-name "$layer_name" \
--zip-file "fileb://$tmp/layer.zip" \
--compatible-architectures "arm64" \
--compatible-runtimes "provided.al2" \
--description "terraform $version" \
--no-cli-pager > out_publish_layer_version

arn=$(jq -r ".LayerArn" $tmp/out_publish_layer_version)
version=$(jq -r ".Version" $tmp/out_publish_layer_version)


aws lambda add-layer-version-permission \
--layer-name $layer_name \
--statement-id xaccount \
--action lambda:GetLayerVersion \
--principal "*" \
--version-number $version > $tmp/out_add_layer_version_permission

echo arn: $arn, version: $version
done
6 changes: 6 additions & 0 deletions scripts/unit_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env sh

GIT_ROOT=$(git rev-parse --show-toplevel)
cd $GIT_ROOT

go test -v ./cli/... ./domain/... ./kit/... ./node/...

0 comments on commit 9c03a61

Please sign in to comment.