Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit cce1d6f

Browse files
authored
Merge pull request #15 from triggermesh/runtime-api-port
Internal API listens on `AWS_LAMBDA_RUNTIME_API:internal_api_port`
2 parents 8e8decd + ef74027 commit cce1d6f

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

main.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ func (rw *responseWrapper) WriteHeader(statusCode int) {
9393
rw.StatusCode = statusCode
9494
}
9595

96-
func setupEnv() error {
96+
func (s *Specification) setupEnv() error {
9797
environment["_HANDLER"], _ = os.LookupEnv("_HANDLER")
9898
environment["LAMBDA_TASK_ROOT"], _ = os.LookupEnv("LAMBDA_TASK_ROOT")
99+
environment["AWS_LAMBDA_RUNTIME_API"] += ":" + s.InternalAPIport
99100

100101
for k, v := range environment {
101102
if err := os.Setenv(k, v); err != nil {
@@ -245,13 +246,23 @@ func ping(w http.ResponseWriter, r *http.Request) {
245246
return
246247
}
247248

248-
func (s *Specification) api() error {
249+
func api() error {
250+
internalSocket, _ := os.LookupEnv("AWS_LAMBDA_RUNTIME_API")
251+
if internalSocket == "" {
252+
return fmt.Errorf("AWS_LAMBDA_RUNTIME_API is not set")
253+
}
254+
249255
apiRouter := http.NewServeMux()
250256
apiRouter.HandleFunc(awsEndpoint+"/init/error", initError)
251257
apiRouter.HandleFunc(awsEndpoint+"/invocation/next", getTask)
252258
apiRouter.HandleFunc(awsEndpoint+"/invocation/", responseHandler)
253259
apiRouter.HandleFunc("/2018-06-01/ping", ping)
254-
return http.ListenAndServe(":"+s.InternalAPIport, apiRouter)
260+
261+
err := http.ListenAndServe(internalSocket, apiRouter)
262+
if err != nil && err != http.ErrServerClosed {
263+
return err
264+
}
265+
return nil
255266
}
256267

257268
func main() {
@@ -263,18 +274,20 @@ func main() {
263274

264275
err := envconfig.Process("", &spec)
265276
if err != nil {
266-
log.Fatal(err)
277+
log.Fatalf("Cannot process env variables: %v", err)
267278
}
268279
log.Printf("%+v\n", spec)
269280

270281
log.Println("Setup app env")
271-
if err := setupEnv(); err != nil {
272-
log.Fatalln(err)
282+
if err := spec.setupEnv(); err != nil {
283+
log.Fatalf("Cannot setup runime env: %v", err)
273284
}
274285

275286
log.Println("Starting API")
276287
go func() {
277-
log.Fatalln(spec.api())
288+
if err := api(); err != nil {
289+
log.Fatalf("Runtime internal API error: %v", err)
290+
}
278291
}()
279292

280293
for i := 0; i < spec.NumberOfinvokers; i++ {
@@ -285,7 +298,7 @@ func main() {
285298
cmd.Stdout = os.Stdout
286299
cmd.Stderr = os.Stderr
287300
if err := cmd.Run(); err != nil {
288-
log.Fatalln(err)
301+
log.Fatalf("Cannot start bootstrap process: %v", err)
289302
}
290303
}(i)
291304
}
@@ -294,5 +307,8 @@ func main() {
294307
taskHandler := http.HandlerFunc(spec.newTask)
295308
taskRouter.Handle("/", spec.mapEvent(taskHandler))
296309
log.Println("Listening...")
297-
log.Fatalln(http.ListenAndServe(":"+spec.ExternalAPIport, taskRouter))
310+
err = http.ListenAndServe(":"+spec.ExternalAPIport, taskRouter)
311+
if err != nil && err != http.ErrServerClosed {
312+
log.Fatalf("Runtime external API error: %v", err)
313+
}
298314
}

0 commit comments

Comments
 (0)