app/config.go (49 lines of code) (raw):

// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you under // the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package app import ( "github.com/aws/aws-sdk-go-v2/aws" ) type appConfig struct { awsLambdaRuntimeAPI string awsConfig aws.Config extensionName string disableLogsAPI bool enableFunctionLogSubscription bool logLevel string logsapiAddr string } // ConfigOption is used to configure the lambda extension type ConfigOption func(*appConfig) // WithLambdaRuntimeAPI sets the AWS Lambda Runtime API // endpoint (normally taken from $AWS_LAMBDA_RUNTIME_API), // used by the AWS client. func WithLambdaRuntimeAPI(api string) ConfigOption { return func(c *appConfig) { c.awsLambdaRuntimeAPI = api } } // WithExtensionName sets the extension name. func WithExtensionName(name string) ConfigOption { return func(c *appConfig) { c.extensionName = name } } // WithoutLogsAPI disables the logs api. func WithoutLogsAPI() ConfigOption { return func(c *appConfig) { c.disableLogsAPI = true } } // WithFunctionLogSubscription enables the logs api subscription // to function log stream. This option will only work if LogsAPI // is not disabled by the WithoutLogsAPI config option. func WithFunctionLogSubscription() ConfigOption { return func(c *appConfig) { c.enableFunctionLogSubscription = true } } // WithLogLevel sets the log level. func WithLogLevel(level string) ConfigOption { return func(c *appConfig) { c.logLevel = level } } // WithLogsapiAddress sets the listener address of the // server listening for logs event. func WithLogsapiAddress(s string) ConfigOption { return func(c *appConfig) { c.logsapiAddr = s } } // WithAWSConfig sets the AWS config. func WithAWSConfig(awsConfig aws.Config) ConfigOption { return func(c *appConfig) { c.awsConfig = awsConfig } }