Skip to content

Commit

Permalink
Merge pull request #1 from mashiike/feature/run-as-lambda-bootstrap
Browse files Browse the repository at this point in the history
Feature/run as lambda bootstrap
  • Loading branch information
fujiwara authored Jun 21, 2022
2 parents 20fcb2e + 283883d commit da16088
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 17 deletions.
45 changes: 36 additions & 9 deletions cmd/ecrm/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import (
"log"
"os"
"sort"
"strings"

"github.com/aws/aws-lambda-go/lambda"
"github.com/fatih/color"
"github.com/fujiwara/ecrm"
"github.com/fujiwara/logutils"
Expand Down Expand Up @@ -34,17 +36,17 @@ func main() {
Usage: "A command line tool for managing ECR repositories",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "config",
Aliases: []string{"c"},
DefaultText: "ecrm.yaml",
Usage: "Load configuration from `FILE`",
EnvVars: []string{"ECRM_CONFIG"},
Name: "config",
Aliases: []string{"c"},
Value: "ecrm.yaml",
Usage: "Load configuration from `FILE`",
EnvVars: []string{"ECRM_CONFIG"},
},
&cli.StringFlag{
Name: "log-level",
DefaultText: "info",
Usage: "Set log level (debug, info, notice, warn, error)",
EnvVars: []string{"ECRM_LOG_LEVEL"},
Name: "log-level",
Value: "info",
Usage: "Set log level (debug, info, notice, warn, error)",
EnvVars: []string{"ECRM_LOG_LEVEL"},
},
},
Commands: []*cli.Command{
Expand Down Expand Up @@ -105,6 +107,24 @@ func main() {
sort.Sort(cli.FlagsByName(app.Flags))
sort.Sort(cli.CommandsByName(app.Commands))

if isLambda() && os.Getenv("ECRM_NO_LAMBDA_BOOTSTRAP") == "" {
app.Action = func(c *cli.Context) error {
setLogLevel(c.String("log-level"))
subcommand := os.Getenv("ECRM_COMMAND")
lambda.Start(func() error {
return ecrmApp.Run(
c.String("config"),
ecrm.Option{
Delete: subcommand == "delete",
Force: subcommand == "delete", //If it works as bootstrap for a Lambda function, delete images without confirmation.
Repository: os.Getenv("ECRM_REPOSITORY"),
},
)
})
return nil
}
}

if err := app.Run(os.Args); err != nil {
log.Fatal(err)
}
Expand All @@ -117,3 +137,10 @@ func setLogLevel(level string) {
log.SetOutput(filter)
log.Println("[debug] Setting log level to", level)
}

func isLambda() bool {
if strings.HasPrefix(os.Getenv("AWS_EXECUTION_ENV"), "AWS_Lambda") || os.Getenv("AWS_LAMBDA_RUNTIME_API") != "" {
return true
}
return false
}
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ go 1.16

require (
github.com/Songmu/prompter v0.5.0
github.com/aws/aws-lambda-go v1.32.0
github.com/aws/aws-sdk-go-v2 v1.9.2
github.com/aws/aws-sdk-go-v2/config v1.6.0
github.com/aws/aws-sdk-go-v2/service/ecr v1.4.2
github.com/aws/aws-sdk-go-v2/service/ecs v1.8.0
github.com/aws/aws-sdk-go-v2/service/lambda v1.9.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/fujiwara/logutils v1.1.0 // indirect
github.com/aws/aws-sdk-go-v2/service/lambda v1.9.1
github.com/dustin/go-humanize v1.0.0
github.com/fatih/color v1.13.0
github.com/fujiwara/logutils v1.1.0
github.com/goccy/go-yaml v1.9.4
github.com/k1LoW/duration v1.1.0
github.com/mattn/go-colorable v0.1.11 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/olekukonko/tablewriter v0.0.5
github.com/urfave/cli/v2 v2.3.0
golang.org/x/sys v0.0.0-20211015200801-69063c4bb744 // indirect
)
9 changes: 7 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Songmu/prompter v0.5.0 h1:uf60xlFItY5nW+rlLJ2XIUfaUReo4gUEeftuUeHpio8=
github.com/Songmu/prompter v0.5.0/go.mod h1:S4Eg25l60kPlnfB2ttFVpvBKYw7RKJexzB3gzpAansY=
github.com/aws/aws-sdk-go-v2 v1.8.0 h1:HcN6yDnHV9S7D69E7To0aUppJhiJNEzQSNcUxc7r3qo=
github.com/aws/aws-lambda-go v1.32.0 h1:i8MflawW1hoyYp85GMH7LhvAs4cqzL7LOS6fSv8l2KM=
github.com/aws/aws-lambda-go v1.32.0/go.mod h1:IF5Q7wj4VyZyUFnZ54IQqeWtctHQ9tz+KhcbDenr220=
github.com/aws/aws-sdk-go-v2 v1.8.0/go.mod h1:xEFuWz+3TYdlPRuo+CqATbeDWIWyaT5uAPwPaWtgse0=
github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s=
github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
Expand All @@ -25,7 +26,6 @@ github.com/aws/aws-sdk-go-v2/service/sso v1.3.2 h1:b+U3WrF9ON3f32FH19geqmiod4uKc
github.com/aws/aws-sdk-go-v2/service/sso v1.3.2/go.mod h1:J21I6kF+d/6XHVk7kp/cx9YVD2TMD2TbLwtRGVcinXo=
github.com/aws/aws-sdk-go-v2/service/sts v1.6.1 h1:1Pls85C5CFjhE3aH+h85/hyAk89kQNlAWlEQtIkaFyc=
github.com/aws/aws-sdk-go-v2/service/sts v1.6.1/go.mod h1:hLZ/AnkIKHLuPGjEiyghNEdvJ2PP0MgOxcmv9EBJ4xs=
github.com/aws/smithy-go v1.7.0 h1:+cLHMRrDZvQ4wk+KuQ9yH6eEg6KZEJ9RI2IkDqnygCg=
github.com/aws/smithy-go v1.7.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
github.com/aws/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc=
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
Expand Down Expand Up @@ -80,6 +80,8 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
Expand Down Expand Up @@ -109,3 +111,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 comments on commit da16088

Please sign in to comment.