Skip to main content

AWS

This config type is used to scrape information about your AWS infrastructure.

aws-scraper.yaml
apiVersion: configs.flanksource.com/v1
kind: ScrapeConfig
metadata:
name: aws-scraper
spec:
aws:
- region:
- eu-west-2
- us-east-1
- af-south-1
- ap-south-1
- eu-central-1
properties:
- name: AWS Link
filter: 'config_type == AWS::IAM::Role'
icon: aws-iam
links:
- text: AWS Link
url: 'https://us-east-1.console.aws.amazon.com/iamv2/home#/roles/details/{{.name}}?section=permissions'
compliance: true
patch_states: false
trusted_advisor_check: false
patch_details: false
cost_reporting:
s3_bucket_path: s3://flanksource-cost-reports/query-results
database: athenacurcfn_flanksource_report
table: flanksource_report
region: af-south-1
inventory: true
exclude:
- Amazon EC2 Reserved Instances Optimization
- Savings Plan
transform:
relationship:
# EKS Cluster to Kubernetes Cluster & Kubernetes Node
- filter: config_type == 'AWS::EKS::Cluster'
expr: |
[
{"type": "Kubernetes::Cluster","labels": {"aws/account-id": tags['account'],"eks-cluster-name": tags["alpha.eksctl.io/cluster-name"]}},
{"type": "Kubernetes::Node","labels": {"aws/account-id": tags['account'],"alpha.eksctl.io/cluster-name": tags["alpha.eksctl.io/cluster-name"]}}
].toJSON()
# EC2 Instance to kubernetes node
- filter: config_type == 'AWS::EC2:Instance'
expr: |
[{"type": "Kubernetes::Node", "labels": {"alpha.eksctl.io/instance-id": config["instance_id"]}}].toJSON()
# IAM Role to Kubernetes Node
- filter: config_type == 'AWS::IAM::Role'
expr: |
[{"type": "Kubernetes::Node", "labels": {"aws/iam-role": config["Arn"]}}].toJSON()
# AvailabilityZone to Zone ID & Kubernetes Node
- filter: config_type == 'AWS::AvailabilityZone'
expr: |
[
{"type": "Kubernetes::Node", "labels": {"aws/account-id": tags['account'], "topology.kubernetes.io/zone": name}},
{"type": "AWS::AvailabilityZoneID", "name": config["ZoneId"]}
].toJSON()
# Region to ZoneID
- filter: config_type == 'AWS::Region'
expr: |
[{"type": "AWS::AvailabilityZoneID", "labels": {"region": name}}].toJSON()
exclude:
- jsonpath: $.tags
- jsonpath: $.privateDnsNameOptionsOnLaunch
- jsonpath: outpostArn
- jsonpath: mapCustomerOwnedIpOnLaunch
- jsonpath: subnetArn

Scraper

FieldDescriptionSchemeRequired
logLevelSpecify the level of logging.string
scheduleSpecify the interval to scrape in cron format. Defaults to every 60 minutes.string
fullSet to true to extract changes from scraped configurations. Defaults to false.bool
retentionSettings for retaining changes, analysis and scraped itemsRetention
awsSpecifies the list of AWS configurations to scrape.[]AWS

AWS

FieldDescriptionSchemeRequired
idA static value or JSONPath expression to use as the ID for the resource.stringtrue
nameA static value or JSONPath expression to use as the Name for the resource. Default value is the id.string
typeA static value or JSONPath expression to use as the type for the resource.stringtrue
cloud_trailSet CloudTrail specificationsCloudTrail
complianceToggle scraping of compliance metadatabool
cost_reportingSpecify cost reporting for scraping of dataCostReporting
createFieldsList of JSONPath expression used to identify the created time of the config. If multiple fields are specified, the first non-empty value will be used.[]string
deleteFieldsList of JSONPath expression used to identify the deleted time of the config. If multiple fields are specified, the first non-empty value will be used.[]string
excludeAWS resources to exclude from scraping[]string
formatFormat of config item, defaults to JSON, available options are JSONstring
includeAWS resources to include for scraping[]string
inventoryToggle scrape of metadata for AWS resourcesbool
itemsA JSONPath expression to use to extract individual items from the resourcestring
patch_detailsEnable/disable scraping of patch detailsbool
patch_statesScrape patch state status, and reportbool
propertiesCustom templatable properties for the scraped config items.[]ConfigProperty
timestampFormatTimestampFormat is a Go time format string used to parse timestamps in createFields and DeletedFields. If not specified, the default is RFC3339.string
transformField to transform resultTransform
trusted_advisor_checkEnable/Disable scraping analyses from Trusted Advisorbool

CloudTrail

FieldDescriptionSchemeRequired
excludeSet events to be excluded from scraping[]string
max_ageSet maximum age of events for scrapingstring

Cost Reporting

FieldDescriptionSchemeRequired
s3_bucket_pathSet path for S3 bucket to scrape published AWS billing reportsstring
tableSpecify table containing cost and usage datastring
databaseSpecify database containing cost and usage datastring
regionSpecify region for S3 bucketstring

Supported Resources

  • Account
  • CloudTrail
  • Config Rules
  • Cost & Usage Reporting
  • EBS
  • EC2
  • ECR
  • EFS
  • EKS
  • IAM
  • Load Balancers
  • RDS
  • Route53
  • Subnet
  • Trusted Advisor
  • VPC