Skip to content

Commit 2bcd06f

Browse files
zh32markussiebert
andauthored
feat: Add encrypted string parameter (#1041)
* feat: Add encrypted string parameter * chore: refactor and add test * chore: development tools * fix: import --------- Co-authored-by: Thomas Geese <[email protected]> Co-authored-by: Markus Siebert <[email protected]> Co-authored-by: Markus <[email protected]>
1 parent 4dcd754 commit 2bcd06f

File tree

46 files changed

+1409
-530
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1409
-530
lines changed

.go-version

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.22.3

.tool-versions

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
golang 1.22.3

API.md

+615-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lambda/__snapshots__/handler_parameter_raw_test.snap

+37
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lambda/__snapshots__/main_test.snap

+25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"RequestType": "Create",
3+
"LogicalResourceId": "LogicalResourceId",
4+
"ResourceProperties": {
5+
"ParameterName": "arn:aws:ssm:eu-central-1:123456789012:parameter/testsecret",
6+
"SopsS3File": {
7+
"Bucket": "..",
8+
"Key": "../test-secrets/binary/sopsfile.enc-age.binary"
9+
},
10+
"Format": "binary",
11+
"ConvertToJSON": "false",
12+
"SopsAgeKey": "AGE-SECRET-KEY-1EFUWJ0G2XJTJFWTAM2DGMA4VCK3R05W58FSMHZP3MZQ0ZTAQEAFQC6T7T3"
13+
},
14+
"ResourceType": "Custom::SOPS::Secret",
15+
"RequestId": "RequestId",
16+
"StackId": "StackId"
17+
}

lambda/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/markussiebert/cdk-sops-secrets
22

3-
go 1.22.0
3+
go 1.22.3
44

55
require (
66
github.com/aws/aws-lambda-go v1.47.0

lambda/handler_parameter_raw_test.go

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
6+
"github.com/gkampitakis/go-snaps/snaps"
7+
)
8+
9+
func Test_FullWorkflow_Create_S3_Parameter_RAW_Simple(t *testing.T) {
10+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_parameter_raw_simple.json")
11+
12+
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
13+
check(err)
14+
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
15+
}

lambda/handler_env_test.go lambda/handler_secret_env_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ import (
77
)
88

99
func Test_FullWorkflow_Create_S3_ENV_Simple(t *testing.T) {
10-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_env_simple.json")
10+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_env_simple.json")
1111

1212
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
1313
check(err)
1414
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
1515
}
1616

1717
func Test_FullWorkflow_Create_S3_ENV_as_JSON_Simple(t *testing.T) {
18-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_env_as_json_simple.json")
18+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_env_as_json_simple.json")
1919
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
2020
check(err)
2121
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)

lambda/handler_json_test.go lambda/handler_secret_json_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,38 @@ import (
77
)
88

99
func Test_FullWorkflow_Create_S3_JSON_Simple(t *testing.T) {
10-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_simple.json")
10+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_simple.json")
1111

1212
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
1313
check(err)
1414
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
1515
}
1616

1717
func Test_FullWorkflow_Create_S3_JSON_Complex(t *testing.T) {
18-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_complex.json")
18+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_complex.json")
1919

2020
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
2121
check(err)
2222
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
2323
}
2424

2525
func Test_FullWorkflow_Create_S3_JSON_Complex_StringifyValues(t *testing.T) {
26-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_complex_stringify.json")
26+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_complex_stringify.json")
2727

2828
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
2929
check(err)
3030
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
3131
}
3232
func Test_FullWorkflow_Create_S3_JSON_Complex_Flat(t *testing.T) {
33-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_complex_flat.json")
33+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_complex_flat.json")
3434

3535
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
3636
check(err)
3737
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
3838
}
3939

4040
func Test_FullWorkflow_Create_INLINE_JSON_Simple(t *testing.T) {
41-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_simple.json")
41+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_simple.json")
4242
event = fileToInline(event)
4343

4444
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
@@ -47,7 +47,7 @@ func Test_FullWorkflow_Create_INLINE_JSON_Simple(t *testing.T) {
4747
}
4848

4949
func Test_FullWorkflow_Create_INLINE_JSON_Complex(t *testing.T) {
50-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_complex.json")
50+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_complex.json")
5151
event = fileToInline(event)
5252

5353
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
@@ -56,15 +56,15 @@ func Test_FullWorkflow_Create_INLINE_JSON_Complex(t *testing.T) {
5656
}
5757

5858
func Test_FullWorkflow_Create_INLINE_JSON_Complex_StringifyValues(t *testing.T) {
59-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_complex_stringify.json")
59+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_complex_stringify.json")
6060
event = fileToInline(event)
6161

6262
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
6363
check(err)
6464
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
6565
}
6666
func Test_FullWorkflow_Create_INLINE_JSON_Complex_Flat(t *testing.T) {
67-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_json_complex_flat.json")
67+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_json_complex_flat.json")
6868
event = fileToInline(event)
6969

7070
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)

lambda/handler_raw_test.go lambda/handler_secret_raw_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
)
88

99
func Test_FullWorkflow_Create_S3_RAW_Simple(t *testing.T) {
10-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_raw_simple.json")
10+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_raw_simple.json")
1111

1212
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
1313
check(err)

lambda/handler_yaml_test.go lambda/handler_secret_yaml_test.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -7,55 +7,55 @@ import (
77
)
88

99
func Test_FullWorkflow_Create_S3_YAML_Simple(t *testing.T) {
10-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_simple.json")
10+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_simple.json")
1111

1212
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
1313
check(err)
1414
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
1515
}
1616

1717
func Test_FullWorkflow_Create_S3_YAML_as_JSON_Simple(t *testing.T) {
18-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_as_json_simple.json")
18+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_as_json_simple.json")
1919

2020
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
2121
check(err)
2222
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
2323
}
2424

2525
func Test_FullWorkflow_Create_S3_YAML_Complex(t *testing.T) {
26-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_complex.json")
26+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_complex.json")
2727

2828
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
2929
check(err)
3030
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
3131
}
3232

3333
func Test_FullWorkflow_Create_S3_YAML_as_JSON_Complex(t *testing.T) {
34-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_as_json_complex.json")
34+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_as_json_complex.json")
3535

3636
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
3737
check(err)
3838
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
3939
}
4040

4141
func Test_FullWorkflow_Create_S3_YAML_Complex_Flat(t *testing.T) {
42-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_complex_flat.json")
42+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_complex_flat.json")
4343

4444
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
4545
check(err)
4646
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
4747
}
4848

4949
func Test_FullWorkflow_Create_S3_YAML_as_JSON_Complex_Flat(t *testing.T) {
50-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_as_json_complex_flat.json")
50+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_as_json_complex_flat.json")
5151

5252
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
5353
check(err)
5454
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
5555
}
5656

5757
func Test_FullWorkflow_Create_INLINE_YAML_Simple(t *testing.T) {
58-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_simple.json")
58+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_simple.json")
5959
event = fileToInline(event)
6060

6161
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
@@ -64,7 +64,7 @@ func Test_FullWorkflow_Create_INLINE_YAML_Simple(t *testing.T) {
6464
}
6565

6666
func Test_FullWorkflow_Create_INLINE_YAML_as_JSON_Simple(t *testing.T) {
67-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_as_json_simple.json")
67+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_as_json_simple.json")
6868
event = fileToInline(event)
6969

7070
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
@@ -73,7 +73,7 @@ func Test_FullWorkflow_Create_INLINE_YAML_as_JSON_Simple(t *testing.T) {
7373
}
7474

7575
func Test_FullWorkflow_Create_INLINE_YAML_Complex(t *testing.T) {
76-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_complex.json")
76+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_complex.json")
7777
event = fileToInline(event)
7878

7979
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
@@ -82,15 +82,15 @@ func Test_FullWorkflow_Create_INLINE_YAML_Complex(t *testing.T) {
8282
}
8383

8484
func Test_FullWorkflow_Create_INLINE_YAML_as_JSON_Complex(t *testing.T) {
85-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_as_json_complex.json")
85+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_as_json_complex.json")
8686

8787
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
8888
check(err)
8989
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
9090
}
9191

9292
func Test_FullWorkflow_Create_INLINE_YAML_Complex_Flat(t *testing.T) {
93-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_complex_flat.json")
93+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_complex_flat.json")
9494
event = fileToInline(event)
9595

9696
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
@@ -99,7 +99,7 @@ func Test_FullWorkflow_Create_INLINE_YAML_Complex_Flat(t *testing.T) {
9999
}
100100

101101
func Test_FullWorkflow_Create_INLINE_YAML_as_JSON_Complex_Flat(t *testing.T) {
102-
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_yaml_as_json_complex_flat.json")
102+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_secret_yaml_as_json_complex_flat.json")
103103
event = fileToInline(event)
104104

105105
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)

0 commit comments

Comments
 (0)