Skip to content

Commit 78d4831

Browse files
authored
feat: create multiple string parameters from complex yaml and json… (#1047)
* feature: create multiple string parameters from complex yaml and json files * chore: add maintainer Signed-off-by: Thomas Geese <[email protected]> * fix: sort keys in order to fix tests Signed-off-by: Thomas Geese <[email protected]> * fix: cdk tests Signed-off-by: Thomas Geese <[email protected]> * chore: recreate yarn lock Signed-off-by: Thomas Geese <[email protected]> * fix: test snapshots Signed-off-by: Thomas Geese <[email protected]> * docs: add multi string parameter docs Signed-off-by: Thomas Geese <[email protected]> * fix: snapshot tests Signed-off-by: Thomas Geese <[email protected]> * fix: snapshot tests Signed-off-by: Thomas Geese <[email protected]> * fix: snpshot tests Signed-off-by: Thomas <[email protected]> --------- Signed-off-by: Thomas Geese <[email protected]> Signed-off-by: Thomas <[email protected]> Co-authored-by: Thomas Geese <[email protected]>
1 parent 2b9b1be commit 78d4831

File tree

42 files changed

+1962
-423
lines changed

Some content is hidden

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

42 files changed

+1962
-423
lines changed

.projen/deps.json

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

.projen/tasks.json

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

.projenrc.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ const project = new awscdk.AwsCdkConstructLibrary({
2929

3030
name: 'cdk-sops-secrets',
3131
repositoryUrl: 'https://github.com/dbsystel/cdk-sops-secrets.git',
32-
// deps: [], /* Runtime dependencies of this module. */
32+
bundledDeps: ['yaml'],
33+
// deps: [], /* Runtime dependencies of this module. */,
3334
// description: undefined, /* The description is just a string that helps people understand the purpose of the package. */
3435
// devDeps: [], /* Build dependencies for this module. */
3536
integrationTestAutoDiscover: true,

API.md

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

MAINTAINERS.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ This page lists all active maintainers of this repository in alphabetical order.
33
[henrysachs](https://github.com/henrysachs)
44
[markussiebert](https://github.com/markussiebert)
55
[thomaskrause](https://github.com/obirah)
6+
[thomasgeese](https://github.com/zh32)

lambda/__snapshots__/handler_parameter_yaml_multi_test.snap

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

lambda/conversion_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ func Test_Flatten(t *testing.T) {
2828
simpleStruct, err := fromJSON(ReadFile("../test-secrets/json/sopsfile.json"))
2929
check(err)
3030
flattenedSimpleStruct := make(map[string]interface{})
31-
err = flatten("", simpleStruct, flattenedSimpleStruct)
31+
err = flatten("", simpleStruct, flattenedSimpleStruct, ".")
3232
snaps.MatchSnapshot(t, ">>>Simple", flattenedSimpleStruct)
3333
complexStruct, err := fromJSON(ReadFile("../test-secrets/json/sopsfile-complex.json"))
3434
check(err)
3535
flattenedComplexStruct := make(map[string]interface{})
36-
err = flatten("", complexStruct, flattenedComplexStruct)
36+
err = flatten("", complexStruct, flattenedComplexStruct, ".")
3737
snaps.MatchSnapshot(t, ">>>Complex", flattenedComplexStruct)
3838
}
3939

lambda/events/event_create_s3_parameter_raw_simple.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "PARAMETER",
6+
"CreationType": "SINGLE",
57
"ParameterName": "arn:aws:ssm:eu-central-1:123456789012:parameter/testsecret",
68
"SopsS3File": {
79
"Bucket": "..",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"RequestType": "Create",
3+
"LogicalResourceId": "LogicalResourceId",
4+
"ResourceProperties": {
5+
"ResourceType": "PARAMETER",
6+
"CreationType": "MULTI",
7+
"ParameterName": "arn:aws:ssm:eu-central-1:123456789012:parameter/testsecret",
8+
"SopsS3File": {
9+
"Bucket": "..",
10+
"Key": "../test-secrets/yaml/sopsfile-complex-parameters.enc-age.yaml"
11+
},
12+
"Format": "yaml",
13+
"Flatten": "true",
14+
"FlattenSeparator": "/",
15+
"ParameterKeyPrefix": "/",
16+
"ConvertToJSON": "false",
17+
"SopsAgeKey": "AGE-SECRET-KEY-1EFUWJ0G2XJTJFWTAM2DGMA4VCK3R05W58FSMHZP3MZQ0ZTAQEAFQC6T7T3"
18+
},
19+
"ResourceType": "Custom::SOPS::Secret",
20+
"RequestId": "RequestId",
21+
"StackId": "StackId"
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"RequestType": "Create",
3+
"LogicalResourceId": "LogicalResourceId",
4+
"ResourceProperties": {
5+
"ResourceType": "PARAMETER",
6+
"CreationType": "MULTI",
7+
"ParameterName": "arn:aws:ssm:eu-central-1:123456789012:parameter/testsecret",
8+
"SopsS3File": {
9+
"Bucket": "..",
10+
"Key": "../test-secrets/yaml/sopsfile-complex-parameters.enc-age.yaml"
11+
},
12+
"Format": "yaml",
13+
"Flatten": "true",
14+
"FlattenSeparator": ".",
15+
"ParameterKeyPrefix": "_",
16+
"ConvertToJSON": "false",
17+
"SopsAgeKey": "AGE-SECRET-KEY-1EFUWJ0G2XJTJFWTAM2DGMA4VCK3R05W58FSMHZP3MZQ0ZTAQEAFQC6T7T3"
18+
},
19+
"ResourceType": "Custom::SOPS::Secret",
20+
"RequestId": "RequestId",
21+
"StackId": "StackId"
22+
}

lambda/events/event_create_s3_secret_env_as_json_simple.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_env_simple.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_json_complex.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_json_complex_flat.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_json_complex_stringify.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_json_simple.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_raw_simple.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_yaml_as_json_complex.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_yaml_as_json_complex_flat.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_yaml_as_json_simple.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_yaml_complex.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_yaml_complex_flat.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",

lambda/events/event_create_s3_secret_yaml_simple.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"RequestType": "Create",
33
"LogicalResourceId": "LogicalResourceId",
44
"ResourceProperties": {
5+
"ResourceType": "SECRET",
6+
"CreationType": "SINGLE",
7+
"FlattenSeparator": ".",
58
"SecretARN": "arn:aws:secretsmanager:eu-central-1:123456789012:secret:testsecret",
69
"SopsS3File": {
710
"Bucket": "..",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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_YAML_multi_Simple(t *testing.T) {
10+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_parameter_yaml_complex.json")
11+
12+
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
13+
check(err)
14+
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
15+
}
16+
17+
func Test_FullWorkflow_Create_S3_Parameter_YAML_multi_Simple_custom_keys(t *testing.T) {
18+
mocks, ctx, event := prepareHandler(t, "events/event_create_s3_parameter_yaml_complex_custom_keys.json")
19+
20+
phys, data, err := mocks.syncSopsToSecretsmanager(ctx, event)
21+
check(err)
22+
snaps.MatchSnapshot(t, ">>>syncSopsToSecretsmanager", phys, data, err)
23+
}

0 commit comments

Comments
 (0)