@@ -21,13 +21,13 @@ import (
2121)
2222
2323type s3RecordContext struct {
24- forwarderMetadata model.ForwarderMetadata
25- tags model.Tags
26- source string
27- service string
28- bucket string
29- key string
30- multilineRegex * regexp.Regexp
24+ metadata model.Metadata
25+ tags model.Tags
26+ source string
27+ service string
28+ bucket string
29+ key string
30+ multilineRegex * regexp.Regexp
3131}
3232
3333func HandleS3 (ctx context.Context , event json.RawMessage , cfg * config.Config , out chan <- model.S3LogEntry ) error {
@@ -41,13 +41,16 @@ func HandleS3(ctx context.Context, event json.RawMessage, cfg *config.Config, ou
4141 return fmt .Errorf ("create S3 client: %w" , err )
4242 }
4343
44- forwarderMetadata := model .GetForwarderMetadata (ctx )
44+ forwarderMetadata , err := model .GetMetadata (ctx )
45+ if err != nil {
46+ return err
47+ }
4548
4649 for _ , record := range s3Event .Records {
4750 bucket := record .S3 .Bucket .Name
4851 key := record .S3 .Object .URLDecodedKey
4952
50- tags , service := getTagsAndService (* cfg )
53+ tags , service := getTagsAndService (cfg )
5154 source := getS3Source (cfg .Source , key )
5255 if service == "" {
5356 service = source
@@ -78,8 +81,9 @@ func processS3Record(ctx context.Context, client S3APIClient, out chan<- model.S
7881
7982 var buf strings.Builder
8083 scanner := bufio .NewScanner (body )
84+ scanner .Split (split )
8185 for scanner .Scan () {
82- line := scanner .Text ()
86+ line := strings . ToValidUTF8 ( scanner .Text (), "" )
8387 if rc .multilineRegex != nil {
8488 if rc .multilineRegex .MatchString (line ) {
8589 if buf .Len () > 0 {
@@ -124,7 +128,7 @@ func makeS3Entry(rc s3RecordContext, message string) model.S3LogEntry {
124128
125129 ddtags = append (ddtags , "service:" + entryService )
126130 metadata := model.S3Metadata {
127- ForwarderMetadata : rc .forwarderMetadata ,
131+ Metadata : rc .metadata ,
128132 S3Context : model.S3Context {
129133 Bucket : rc .bucket ,
130134 Key : rc .key ,
0 commit comments