AWS ElasticSearch non accetta determinati documenti CloudTrail
Aggiorna 2
Mi è stato indicato questo progetto. Lo implementerò come mi piace la soluzione.
https://github.com/chariotsolutions/aws-examples/tree/trunk/cloudtrail_to_elasticsearch
Domanda originale:
Alcuni tipi di eventi AWS CloudTrail non arrivano ad AWS ElasticSearch. Infine, mi sono limitato a un documento JSON molto semplificato che fallisce e, a questo punto, ho potuto utilizzare alcune informazioni.
Quindi, nonostante ciò, POST qualche indice-casuale-ogni-volta / _doc
POST ddd/_doc
{
"eventVersion": "1.05",
"eventTime": "2020-10-21T00:37:26Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutBucketPolicy",
"awsRegion": "eu-central-1",
"errorCode": "AccessDenied",
"errorMessage": "Access Denied",
"requestParameters": {
"bucketPolicy": {
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"Service": "logs.eu-central-1.amazonaws.com"
}
},
{
"Principal": {
"Service": "logs.eu-central-1.amazonaws.com"
}
},
{
"Principal": {
"AWS": [
"arn:aws:iam::1234567890:root"
]
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::1234567890:root"
]
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::whatever/*"
},
{
"Sid": "ProtectLogs",
"Effect": "Deny",
"Principal": "*"
}
]
}
}
}
Ricevo sempre lo stesso errore:
{
"type": "illegal_argument_exception",
"reason": "mapper [requestParameters.bucketPolicy.Statement.Principal] of different type, current_type [text], merged_type [ObjectMapper]"
}
Se rimuovo questo blocco da JSON, il documento viene accettato:
{
"Sid": "ProtectLogs",
"Effect": "Deny",
"Principal": "*"
}
Update1 :
Io penso che dovrei creare un modello e definire una mappatura per questo campo in modo ES non venga confuso
Risposte
Il problema si verifica a causa del Principalcampo che è presente allo stesso livello ma nel primo blocco è di tipo objectcome di seguito
{
"Principal": {
"Service": "logs.eu-central-1.amazonaws.com"
}
},
E nell'ultimo blocco, che quando hai rimosso ha funzionato, è di tipo text, il che crea il problema e il messaggio di errore è anche molto chiaro e si lamenta di tipi di unione incompatibili, textda objectdigitare.
Invece di rimuovere il blocco, puoi provare a rinominare il campo in Principal_newe funzionerà, altrimenti crea una mappatura / modello statico per tutti i tuoi campi indice in modo che questi campi non siano confusi, come hai già indovinato