New to Kestra?
Use blueprints to kickstart your first workflows.
Inspect AWS ECR container image vulnerability scan findings, detect Critical/High CVEs, create GitHub remediation issues, and alert Slack.
Container image vulnerabilities can introduce exploitable attack vectors if unpatched packages reach production clusters. While Amazon ECR supports automated image scanning with Clair or Amazon Inspector, security teams often lack continuous, auditable alerting pipelines that translate scan results into tracked engineering tickets. This blueprint regularly queries Amazon ECR for container image scan findings, categorizes critical and high-severity CVEs, files a prioritized GitHub remediation issue, and alerts on-call security teams via Slack.
daily_ecr_security_scan (io.kestra.plugin.core.trigger.Schedule) triggers the audit on a recurring schedule (default daily at 06:00 UTC, shipped disabled for manual verification).probe_ecr_scan_findings (io.kestra.plugin.aws.cli.AwsCLI) runs aws ecr describe-image-scan-findings, capturing image scan findings, vulnerability summaries, and severity counts.evaluate_vulnerability_counts (io.kestra.plugin.core.debug.Return) safely extracts the count of CRITICAL, HIGH, and MEDIUM vulnerabilities from the scan findings output.branch_on_vulnerabilities (io.kestra.plugin.core.flow.If) checks if any CRITICAL or HIGH vulnerabilities exist:then: Automatically opens a GitHub security issue with remediation context via create_github_security_issue (io.kestra.plugin.github.issues.Create) and dispatches a rich notification via alert_secops_slack (io.kestra.plugin.slack.notifications.SlackIncomingWebhook).else: Emits an informational log entry (log_clean_image) confirming compliance.log_audit_summary (io.kestra.plugin.core.log.Log) records the final scan state for continuous observability.errors block alerts Slack if credentials expire, the repository is missing, or the ECR API call fails.Connecting cloud provider APIs (AWS ECR), security issue trackers (GitHub), and team communication channels (Slack) requires a resilient orchestration engine. Kestra manages secrets natively, handles scheduled cron executions, isolates command environments, and provides full execution audit trails without requiring custom container daemons or fragmented serverless functions.
ecr:DescribeImageScanFindings permission.AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: AWS credentials with read permissions for ECR.GITHUB_TOKEN: GitHub token used to open vulnerability remediation issues.SLACK_WEBHOOK: Slack Incoming Webhook URL for security alerts.aws_region (STRING, default us-east-1): Target AWS region hosting the ECR repository.repository_name (STRING, default production-backend-app): Name of the ECR repository to audit.image_tag (STRING, default latest): Tag of the container image to inspect for vulnerabilities.github_repository (STRING, default my-org/security-remediations): GitHub repository (owner/repo) where security issues are created.outputs.probe_ecr_scan_findings.vars.imageScanFindings: The raw scan findings returned by AWS ECR.outputs.evaluate_vulnerability_counts.value: Extracted vulnerability count object containing critical_count, high_count, medium_count, and has_high_or_critical.AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, GITHUB_TOKEN, and SLACK_WEBHOOK secrets in your Kestra namespace.repository_name and image_tag to point to an existing scanned image.daily_ecr_security_scan trigger to enforce continuous daily vulnerability monitoring.critical_count exceeds a designated SLA threshold.aws ecr put-image-tag-mutability) to block vulnerable images from deployment.io.kestra.plugin.core.flow.ForEach task.