Skip to content

Commit 6ab8614

Browse files
committed
Handling for not existent SSM keys with properly error
1 parent 8f0e9ed commit 6ab8614

2 files changed

Lines changed: 15 additions & 30 deletions

File tree

src/command_dotenv.go

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package main
22

33
import (
44
"bytes"
5-
"fmt"
65
"github.com/aws/aws-sdk-go/aws"
76
"github.com/aws/aws-sdk-go/aws/session"
87
"github.com/aws/aws-sdk-go/service/ssm"
@@ -212,7 +211,7 @@ func (c *DotEnvCommand) processDotEnv() error {
212211
j = len(names)
213212
}
214213

215-
values, err := c.getParameters(names[i:j], c.decrypt)
214+
values, err := c.getParameters(names[i:j], c.decrypt, ssmVars[i:j])
216215
if err != nil {
217216
return err
218217
}
@@ -228,7 +227,7 @@ func (c *DotEnvCommand) processDotEnv() error {
228227
return nil
229228
}
230229

231-
func (c *DotEnvCommand) getParameters(names []string, decrypt bool) (map[string]string, error) {
230+
func (c *DotEnvCommand) getParameters(names []string, decrypt bool, ssmVars []ssmVar) (map[string]string, error) {
232231
values := make(map[string]string)
233232

234233
input := &ssm.GetParametersInput{
@@ -242,35 +241,21 @@ func (c *DotEnvCommand) getParameters(names []string, decrypt bool) (map[string]
242241
resp, err := c.ssm.GetParameters(input)
243242
c.log.must(err)
244243

245-
if len(resp.InvalidParameters) > 0 {
246-
return values, newInvalidParametersError(resp)
247-
}
248-
249-
for _, p := range resp.Parameters {
250-
values[*p.Name] = *p.Value
251-
}
252-
253-
return values, nil
254-
}
255-
256-
type invalidParametersError struct {
257-
InvalidParameters []string
258-
}
259-
260-
func newInvalidParametersError(resp *ssm.GetParametersOutput) *invalidParametersError {
261-
e := new(invalidParametersError)
262-
for _, p := range resp.InvalidParameters {
263-
if p == nil {
264-
continue
244+
for _, v := range ssmVars {
245+
for _, p := range resp.Parameters {
246+
if strings.EqualFold(v.parameter, *p.Name) {
247+
values[v.parameter] = *p.Value
248+
}
249+
}
250+
for _, p := range resp.InvalidParameters {
251+
if strings.EqualFold(v.parameter, *p) {
252+
values[v.parameter] = "VALUE_NOT_EXISTS"
253+
c.log.Warning("Value for parameter: %s not exists in AWS Parameter Store. Environment variable: %s", v.parameter, v.envVar)
254+
}
265255
}
266-
267-
e.InvalidParameters = append(e.InvalidParameters, *p)
268256
}
269-
return e
270-
}
271257

272-
func (e *invalidParametersError) Error() string {
273-
return fmt.Sprintf("invalid parameters: %v", e.InvalidParameters)
258+
return values, nil
274259
}
275260

276261
func (c *DotEnvCommand) parameter(k, v string) (*string, error) {

src/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package main
22

3-
const Version = "v0.2.2"
3+
const Version = "v0.3.0"
44

55
const CiEnvVar = "CI"
66
const TerraformEnvVar = "TF_ENV"

0 commit comments

Comments
 (0)