Summary

The createAwsS3SqsIngestFeed() mutation creates an ingest feed that reads log data from an Amazon S3 bucket using SQS event notifications. LogScale automatically pulls data from S3 as new objects arrive in the bucket. To modify a feed, use updateAwsS3SqsIngestFeed().

Syntax

graphql
createAwsS3SqsIngestFeed(
      input: CreateAwsS3SqsIngestFeed!
   ): IngestFeed!

The mutation accepts a single required argument, input, of type CreateAwsS3SqsIngestFeed!. This input includes the repository name, the parser identifier, and the AWS connection details such as authentication credentials and SQS queue configuration. The mutation returns a non-null IngestFeed! object.

Example

Raw
graphql
mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: "humio", 
          name: "main-server",
          parser: "audit-log",
          authentication: {kind: IamRole, roleArn: "arn:aws_iam::1234:user/admin"},
          sqsUrl: "http://address.com/something",
          region: "us-west-2",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: \"humio\", 
          name: \"main-server\",
          parser: \"audit-log\",
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"},
          sqsUrl: \"http://address.com/something\",
          region: \"us-west-2\",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: \"humio\", 
          name: \"main-server\",
          parser: \"audit-log\",
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"},
          sqsUrl: \"http://address.com/something\",
          region: \"us-west-2\",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "mutation { ^
  createAwsS3SqsIngestFeed(input: ^
        { repositoryName: \"humio\",  ^
          name: \"main-server\", ^
          parser: \"audit-log\", ^
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"}, ^
          sqsUrl: \"http://address.com/something\", ^
          region: \"us-west-2\", ^
          enabled: true, ^
          preprocessing: {kind: SplitAwsRecords}, ^
          compression: Auto ^
        } ) ^
  {name, enabled } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: \"humio\", 
          name: \"main-server\",
          parser: \"audit-log\",
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"},
          sqsUrl: \"http://address.com/something\",
          region: \"us-west-2\",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: \"humio\", 
          name: \"main-server\",
          parser: \"audit-log\",
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"},
          sqsUrl: \"http://address.com/something\",
          region: \"us-west-2\",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: \"humio\", 
          name: \"main-server\",
          parser: \"audit-log\",
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"},
          sqsUrl: \"http://address.com/something\",
          region: \"us-west-2\",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "mutation {
  createAwsS3SqsIngestFeed(input:
        { repositoryName: \"humio\", 
          name: \"main-server\",
          parser: \"audit-log\",
          authentication: {kind: IamRole, roleArn: \"arn:aws_iam::1234:user/admin\"},
          sqsUrl: \"http://address.com/something\",
          region: \"us-west-2\",
          enabled: true,
          preprocessing: {kind: SplitAwsRecords},
          compression: Auto
        } )
  {name, enabled }
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Input Parameters

Provide the repository name, the parser name or unique identifier, and the AWS connection details required to authenticate and read from the SQS queue and S3 bucket.

Table: CreateAwsS3SqsIngestFeed Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
authenticationIngestFeedAwsAuthenticationInputyes Long-Term How to authenticate to AWS. See IngestFeedAwsAuthenticationInput.
compressionIngestFeedCompressionyes Long-Term Compression scheme of the file. See IngestFeedCompression.
descriptionString  Long-Term The description of the ingest feed. See UpdateIngestFeedDescription.
enabledBooleanyes Long-Term Whether ingest from the ingest feed is enabled.
nameStringyes Long-Term The name of the ingest feed.
parserStringyes Long-Term The unique identifier or name of the parser that should be used to parse the ingest feed. Parsers in packages can be referred to as packagescope/packagename:parsername.
preprocessingIngestFeedPreprocessingInputyes Long-Term The preprocessing to apply to an ingest feed before parsing. See IngestFeedPreprocessingInput.
regionStringyes Long-Term The AWS region in which to connect.
repositoryNameRepoOrViewNameyes Long-Term Name of the repository of the ingest feed. RepoOrViewName is a scalar.
sqsUrlStringyes Long-Term The AWS SQS queue URL.

Returned Values

The mutation returns an IngestFeed! object representing the created feed. The returned object includes the feed ID, name, enabled status, and parser details.

Table: IngestFeed Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
createdAtLongyes Long-Term Unix timestamp for when this feed was created.
descriptionString  Long-Term A description of the ingest feed.
enabledBooleanyes Long-Term Whether the ingest from the ingest feed is enabled.
executionInfoIngestFeedExecutionInfo  Long-Term Details about how the ingest feed is running. See IngestFeedExecutionInfo.
forceStoppedBooleanyes Preview Whether the ingest feed is force stopped, meaning only a cluster manager can start the ingest feed again.
idStringyes Long-Term The unique identifier of the ingest feed.
nameStringyes Long-Term The name of the ingest feed.
parserParser  Long-Term The parser used to parse the ingest feed. See Parser.
sourceIngestFeedSourceyes Long-Term The source of the ingest feed. See IngestFeedSource.