-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcollector.go
35 lines (33 loc) · 1.05 KB
/
collector.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package beldilib
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/dynamodb/expression"
lambdaSdk "github.com/aws/aws-sdk-go/service/lambda"
"time"
)
func RestartAll(lambdaId string) {
intentTable := fmt.Sprintf("%s-collector", lambdaId)
filter := expression.Name("ASYNC").Equal(expression.Value(true)).
And(expression.Name("DONE").Equal(expression.Value(false)).
And(expression.AttributeExists(expression.Name("ST")).
And(expression.Name("ST").LessThan(expression.Value(time.Now().Unix() - T)))))
items := LibScan(intentTable, []string{"InstanceId", "INPUT"}, filter)
for _, item := range items {
instanceId := item["InstanceId"].(string)
input := item["INPUT"]
iw := InputWrapper{
InstanceId: instanceId,
Async: true,
CallerName: "",
Input: input,
}
payload := iw.Serialize()
_, err := LambdaClient.Invoke(&lambdaSdk.InvokeInput{
FunctionName: aws.String(fmt.Sprintf("beldi-dev-%s", lambdaId)),
Payload: payload,
InvocationType: aws.String("Event"),
})
CHECK(err)
}
}