New to Kestra?
Use blueprints to kickstart your first workflows.
Poll AWS GuardDuty for high-severity threat findings and alert Slack with finding types and resource details.
This sentinel runs on a schedule to detect high-severity security threats reported by AWS GuardDuty. It enumerates all active GuardDuty detectors, queries findings above a configurable severity threshold (default 7.0), and sends a Slack alert listing the finding types and affected resources when any high-severity finding exists.
io.kestra.plugin.aws.cli.AwsCLI calls aws guardduty list-detectors to retrieve all detector IDs in the
target region.aws guardduty list-findings is called with a severity filter using Gte (greater than or
equal to) the configured severity_threshold input.aws guardduty get-findings retrieves the full finding details. The finding types
are de-duplicated and collected with the detector ID and count.io.kestra.plugin.core.flow.If branches on high_severity_found. When true, a Slack alert is sent with the
total count, finding types, and detector summary. When false, the flow logs a clean result.errors block fires a Slack alert on any unhandled exception.GuardDuty has native EventBridge integration, but it requires configuring rules, targets, and SNS topics separately. Kestra consolidates the detector enumeration, findings query, severity filtering, and Slack alert into one declarative flow with retries, execution history, and namespace-scoped secrets, no EventBridge or SNS setup needed.
guardduty:ListDetectors, guardduty:ListFindings, and guardduty:GetFindings
permissions.AWS_ACCESS_KEY_ID: AWS access key ID.AWS_SECRET_ACCESS_KEY: AWS secret access key.SLACK_WEBHOOK: Slack incoming webhook URL.AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and SLACK_WEBHOOK to your Kestra namespace secrets.aws_region to the region where GuardDuty is enabled.severity_threshold (default: 7.0) to match your alerting policy.ForEach with a list of region inputs.