Documentation ¶
Index ¶
- Variables
- func GetSecretValues(secretArn string, values interface{}) error
- func GetSecretValuesWithFactory(secretArn string, values interface{}, factory SecretsManagerFactory) error
- func HandleError(err error)
- func NewSecretsManagerMock() (*SecretsManagerMock, SecretsManagerFactory)
- func RenewLogger(options ...zlog.Option)
- func Start[T any](callback Callback[T])
- func WithLogger(key string, value interface{})
- type Callback
- type Event
- type EventRecord
- type SecretsManagerClient
- type SecretsManagerFactory
- type SecretsManagerMock
Constants ¶
This section is empty.
Variables ¶
var ( ErrFailedDecodeEvent = goerr.New("failed to decode event") ErrFailedEncodeEvent = goerr.New("failed to encode event") ErrNoEventData = goerr.New("no event data") ErrInvalidARN = goerr.New("invalid ARN") ErrFailedSecretsManager = goerr.New("failed SecretsManager operation") ErrFailedDecodeSecret = goerr.New("failed to decode secret") )
var Logger *zlog.Logger
Logger is common logging interface
Functions ¶
func GetSecretValues ¶
GetSecretValues bind secret data of AWS Secrets Manager to values. values should be set as pointer of struct with json meta tag.
type mySecret struct { Token string `json:"token"` } var secret mySecret if err := golambda.GetSecretValues(secretARN, &secret); err != nil { log.Fatal("Failed: ", err) }
func GetSecretValuesWithFactory ¶
func GetSecretValuesWithFactory(secretArn string, values interface{}, factory SecretsManagerFactory) error
GetSecretValuesWithFactory can call SecretsManager.GetSecretValue with your SecretsManagerClient by factory. It uses newDefaultSecretsManager if factory is nil
func HandleError ¶
func HandleError(err error)
HandleError emits the error to Sentry and outputs the error to logs
func NewSecretsManagerMock ¶
func NewSecretsManagerMock() (*SecretsManagerMock, SecretsManagerFactory)
NewSecretsManagerMock returns both of mock and factory method of the mock for testing. Developer can set secrets value as JSON to SecretsManagerMock.Secrets with key (secretes ARN). Also the mock stores Region that is extracted from secretArn and Input of secretsmanager.GetSecretValue when invoking GetSecretValuesWithFactory.
func RenewLogger ¶
func Start ¶
Start sets up Arguments and logging tools, then invoke Callback with Arguments. When exiting, it also does error handling if Callback returns error
func WithLogger ¶
func WithLogger(key string, value interface{})
Types ¶
type Callback ¶
Callback is callback function type of golambda.Start().
Trigger event data (SQS, SNS, etc) is included in Event.
Callback has 2 returned value. 1st value (interface{}) will be passed to Lambda. The 1st value is allowed nil if you do not want to return any value to Lambda. 2nd value (error) also will be passed to Lambda, however golambda.Start() does error handling: 1) Extract stack trace of error if err is golambda.Error 2) Send error record to sentry.io if SENTRY_DSN is set as environment variable 3) Output error log
type Event ¶
type Event struct {
// contains filtered or unexported fields
}
Event provides lambda original event converting utilities
func NewSQSEvent ¶
NewSQSEvent sets v as SQSEvent body. This function overwrite Origin for testing. NewSQSEvent allows both of one record and multiple record as slice or array e.g.)
ev.NewSQSEvent("red") -> one SQSMessage in SQSEvent ev.NewSQSEvent([]string{"blue", "orange"}) -> two SQSMessage in SQSEvent
func (*Event) Bind ¶
Bind does json.Marshal original event and json.Unmarshal to v. If failed, return error with ErrInvalidEventData.
func (*Event) DecapSNS ¶
func (x *Event) DecapSNS() ([]EventRecord, error)
DecapSNS decapsulate wrapped body data in SNSEvent. If no SQS records, it returns ErrNoEventData.
func (*Event) DecapSNSoverSQS ¶
func (x *Event) DecapSNSoverSQS() ([]EventRecord, error)
DecapSNSoverSQS decapsulate wrapped body data to in SNSEntity over SQSEvent. If no SQS records, it returns ErrNoEventData.
func (*Event) DecapSQS ¶
func (x *Event) DecapSQS() ([]EventRecord, error)
DecapSQS decapsulate wrapped body data in SQSEvent. If no SQS records, it returns ErrNoEventData.
func (*Event) NewSNSEvent ¶
NewSNSEvent sets v as SNS entity. This function overwrite Origin for testing. NewSNSEvent allows both of one record and multiple record as slice or array e.g.) ev.NewSNSEvent("red") -> one SNS entity in SNSEvent ev.NewSNSEvent([]string{"blue", "orange"}) -> two SNS entity in SNSEvent
func (*Event) NewSNSonSQSEvent ¶
NewSNSonSQSEvent sets v as SNS entity over SQS. This function overwrite Origin and should be used for testing. NewSNSonSQSEvent allows both of one record and multiple record as slice or array
e.g.)
ev.NewSNSonSQSEvent("red") // -> one SQS message on one SQS event ev.NewSNSonSQSEvent([]string{"blue", "orange"}) // -> two SQS message on one SQS event
type EventRecord ¶
type EventRecord []byte
EventRecord is decapsulate event data (e.g. Body of SQS event)
func (EventRecord) Bind ¶
func (x EventRecord) Bind(ev any) error
Bind unmarshal event record to object. If failed, return error with ErrInvalidEventData.
type SecretsManagerClient ¶
type SecretsManagerClient interface {
GetSecretValue(*secretsmanager.GetSecretValueInput) (*secretsmanager.GetSecretValueOutput, error)
}
SecretsManagerClient is wrapper of secretsmanager.SecretsManager
type SecretsManagerFactory ¶
type SecretsManagerFactory func(region string) (SecretsManagerClient, error)
SecretsManagerFactory is factory function type to replace SecretsManagerClient
type SecretsManagerMock ¶
type SecretsManagerMock struct { Secrets map[string]string Region string Input []*secretsmanager.GetSecretValueInput }
SecretsManagerMock is mock of SecretsManagerClient for testing.
func (*SecretsManagerMock) GetSecretValue ¶
func (x *SecretsManagerMock) GetSecretValue(input *secretsmanager.GetSecretValueInput) (*secretsmanager.GetSecretValueOutput, error)
GetSecretValue is mock method for SecretsManagerMock. It checks if the secretId (ARN) exists in SecretsManagerMock.Secrets as key. It returns a string value if existing or ResourceNotFoundException error if not existing.