SlideShare a Scribd company logo
Classificatie: vertrouwelijk
Steampipe
select *
from <cloud>
Conclusion Code Café – 31 mei 2022
Lucas Jellema, CTO & Architect AMIS | Conclusion
Classificatie: vertrouwelijk
Steampipe
• select from csv
• select from json – incl aggregate
• select from json join csv
• select from cloud
• under the hood: PostgreSQL – foreign interface (plug in external data
sources and access them like read only tables)
• scripts
• modules
• Steampipe dashboards allow you to visualize your steampipe data.
• Steampipe mods can also define benchmarks and controls to assess your
environment against security, compliance, operational, and cost controls.
Conclusion Code Café - Steampipe - select * from cloud; 2
Classificatie: vertrouwelijk
select * from CSV
Conclusion Code Café - Steampipe - select * from cloud; 3
select upper("Title") as title
, "Author“ as author
from
csv.books
where
"Genre" = 'economics'
books.csv
Classificatie: vertrouwelijk
select * from CSV
Conclusion Code Café - Steampipe - select * from cloud; 4
select upper("Title") as title
, "Author“ as author
from
csv.books
where
"Genre" = 'economics'
books.csv
Classificatie: vertrouwelijk
select * from multiple CSV files
Conclusion Code Café - Steampipe - select * from cloud; 5
select "Title"
, "Author"
, "Genre"
, "description" as "Genre Description"
, "status_points" as "Genre Status Score"
from
csv.books b
join
csv.genres g
on
b."Genre" = g."genre"
books.csv
genres.csv
Classificatie: vertrouwelijk
select * from multiple data sources (CSV, JSON, YAML, INI)
Conclusion Code Café - Steampipe - select * from cloud; 6
with books_from_json as
( select e.item ->> 'title' as title
, e.item ->> 'author' as author
..
from json_file b
cross join
jsonb_path_query(b.content, '$.books[*]') as e(item)
where
b.path like '%books.json'
)
, books_from_csv as
( select "Title" as title
, "Genre" as genre
from
csv.books
)
select bj.title
, bc.genre
..
from
books_from_json bj
join
books_from_csv bc
on
bj.title = bc.title
books.csv
books.json
Classificatie: vertrouwelijk
Query for Compute Instances on Oracle Cloud
Conclusion Code Café - Steampipe - select * from cloud; 7
Classificatie: vertrouwelijk
Query the Cloud
Conclusion Code Café - Steampipe - select * from cloud; 8
OCI REST API
Calls
Result in tabular, csv,
json format
Classificatie: vertrouwelijk
Steampipe query features
• Output format: table, json, csv
• Named queries (defined in .sql file, reused like views in SQL statements)
• Interactive shell
• Batch mode (background, one or more .sql scripts)
• => write results to standard output
• steampipe query oci-vms.sql --output json > oci_compute_instances.json
• Service Mode => start embedded PostgreSQL database – allowing access from any tool that
can talk to PostgreSQL
• leverage Steampipe database views
• Container image is available
• Aggregator connections
• one query across multiple data sources
• Cast values – for example
text to int (::int)
Conclusion Code Café - Steampipe - select * from cloud; 9
Classificatie: vertrouwelijk
Steampipe – plugin framework with embedded PostgresSQL
Conclusion Code Café - Steampipe - select * from cloud; 10
Classificatie: vertrouwelijk
Embedded PostgreSQL
• each plugin corresponds to a database schema
Conclusion Code Café - Steampipe - select * from cloud; 11
Classificatie: vertrouwelijk
Embedded PostgreSQL
• each plugin corresponds to a database schema
• each resource is exposed as a database view
• data populated from external data source through foreign data wrapper
Conclusion Code Café - Steampipe - select * from cloud; 12
imap_message
gitlab_branch
azure_storage_blob
aws_ec2_instance
twitter_search_recent
{csv-file-name}
Classificatie: vertrouwelijk
Under the hood
• Steampipe leverages PostgreSQL Foreign Data Wrappers to provide a SQL
interface to external services and systems.
• Steampipe uses an embedded PostgreSQL database and you can use
standard Postgres syntax to query Steampipe.
• note: no data is persisted in Steampipe: every table access may correspond
to one (or more) API calls
• query results are cached for 5 minutes by default
(configurable per data source)
• select only columns actually needed. Do NOT use select *
• [For non-key columns,] data for all rows must be collected, and then
filtered
• custom Steampipe plugins can be created and easily be integrated
• Steampipe plugins are programmed in Go
Conclusion Code Café - Steampipe - select * from cloud; 13
Classificatie: vertrouwelijk
Steampipe Dashboards
• Steampipe can run dashboards that consolidate and visualize
results from Steampipe queries
• Dashboards are defined in HCL (language of Terraform)
• per element: define title, SQL query, type of widget, width
• 100s of predefined dashboards are available
• Data can be downloaded from Dashboard
• SQL queries can easily be copied from Dashboard
• Queries can be parametrized – with values coming from
user input UI elements – text or select (populated from SQL)
Conclusion Code Café - Steampipe - select * from cloud; 14
Classificatie: vertrouwelijk
Steampipe Benchmarks & Controls
• a generic mechanism for defining and
running control frameworks such as CIS,
NIST, HIPAA, etc, as well as your own
customized groups of controls
• simplified, consistent mechanism for
defining, running, and returning output
from disparate benchmark and control
frameworks.
• checks in the SQL results for violations of
rules & recommendations
• on security, cost control
Conclusion Code Café - Steampipe - select * from cloud; 15
Classificatie: vertrouwelijk
Summary
• steampipe.io
• very convenient way of retrieving and
combining resource (meta) data from
many different sources
• valuable for development and operations
• not for runtime data retrieval in
applications
Conclusion Code Café - Steampipe - select * from cloud; 16

More Related Content

What's hot (20)

PPTX
Module (10) NAT for IPV4.pptx
GeorgeThoreJr
 
PPTX
Sincronização de um sistema distribuído
Tiago R. Sampaio
 
PDF
Arquiteturas de computadores: Paralelismo
Elaine Cecília Gatto
 
PPTX
Cloud 1.2.pptx
kumari36
 
PPTX
13- Tumbling Window Trigger in Azure Data Factory.pptx
BRIJESH KUMAR
 
PDF
Cloud native integration
Kim Clark
 
PPTX
Kafka: Uma introdução para Desenvolvedores e Arquitetos
Victor Osorio
 
PPTX
Dynamic storage allocation techniques in Compiler design
kunjan shah
 
PDF
Uber Business Metrics Generation and Management Through Apache Flink
Wenrui Meng
 
PPTX
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Lucas Jellema
 
PPTX
The hardest part of microservices: your data
Christian Posta
 
PPTX
Introduction to Google Cloud Platform
dhruv_chaudhari
 
PPTX
Dynamic routing protocols (CCNA)
Varinder Singh Walia
 
PPTX
OpenSSL
Timbal Mayank
 
PPTX
Various Cloud offerings AWS/AZURE/GCP
Mohammad Imran Ansari
 
PPTX
Message and Stream Oriented Communication
Dilum Bandara
 
PDF
Network traffic analysis course
TECHNOLOGY CONTROL CO.
 
PPTX
Serverless computing
NitinSalvi14
 
PPTX
Design Pattern - Factory Method Pattern
Mudasir Qazi
 
PDF
Time, clocks and the ordering of events
Amir Payberah
 
Module (10) NAT for IPV4.pptx
GeorgeThoreJr
 
Sincronização de um sistema distribuído
Tiago R. Sampaio
 
Arquiteturas de computadores: Paralelismo
Elaine Cecília Gatto
 
Cloud 1.2.pptx
kumari36
 
13- Tumbling Window Trigger in Azure Data Factory.pptx
BRIJESH KUMAR
 
Cloud native integration
Kim Clark
 
Kafka: Uma introdução para Desenvolvedores e Arquitetos
Victor Osorio
 
Dynamic storage allocation techniques in Compiler design
kunjan shah
 
Uber Business Metrics Generation and Management Through Apache Flink
Wenrui Meng
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Lucas Jellema
 
The hardest part of microservices: your data
Christian Posta
 
Introduction to Google Cloud Platform
dhruv_chaudhari
 
Dynamic routing protocols (CCNA)
Varinder Singh Walia
 
OpenSSL
Timbal Mayank
 
Various Cloud offerings AWS/AZURE/GCP
Mohammad Imran Ansari
 
Message and Stream Oriented Communication
Dilum Bandara
 
Network traffic analysis course
TECHNOLOGY CONTROL CO.
 
Serverless computing
NitinSalvi14
 
Design Pattern - Factory Method Pattern
Mudasir Qazi
 
Time, clocks and the ordering of events
Amir Payberah
 

More from Lucas Jellema (20)

PPTX
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
PPTX
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Lucas Jellema
 
PPTX
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lucas Jellema
 
PPTX
Apache Superset - open source data exploration and visualization (Conclusion ...
Lucas Jellema
 
PPTX
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
Lucas Jellema
 
PPTX
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Lucas Jellema
 
PPTX
Op je vingers tellen... tot 1000!
Lucas Jellema
 
PPTX
IoT - from prototype to enterprise platform (DigitalXchange 2022)
Lucas Jellema
 
PPTX
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Lucas Jellema
 
PPTX
Introducing Dapr.io - the open source personal assistant to microservices and...
Lucas Jellema
 
PPTX
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 
PPTX
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
PPTX
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Lucas Jellema
 
PPTX
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
Lucas Jellema
 
PPTX
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Lucas Jellema
 
PPTX
Tech Talks 101 - DevOps (jan 2022)
Lucas Jellema
 
PPTX
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Lucas Jellema
 
PPTX
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 
PPTX
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Lucas Jellema
 
PPTX
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
Lucas Jellema
 
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Lucas Jellema
 
Op je vingers tellen... tot 1000!
Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Lucas Jellema
 
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
Lucas Jellema
 
Ad

Recently uploaded (20)

PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Ad

Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Café May 2022)

  • 1. Classificatie: vertrouwelijk Steampipe select * from <cloud> Conclusion Code Café – 31 mei 2022 Lucas Jellema, CTO & Architect AMIS | Conclusion
  • 2. Classificatie: vertrouwelijk Steampipe • select from csv • select from json – incl aggregate • select from json join csv • select from cloud • under the hood: PostgreSQL – foreign interface (plug in external data sources and access them like read only tables) • scripts • modules • Steampipe dashboards allow you to visualize your steampipe data. • Steampipe mods can also define benchmarks and controls to assess your environment against security, compliance, operational, and cost controls. Conclusion Code Café - Steampipe - select * from cloud; 2
  • 3. Classificatie: vertrouwelijk select * from CSV Conclusion Code Café - Steampipe - select * from cloud; 3 select upper("Title") as title , "Author“ as author from csv.books where "Genre" = 'economics' books.csv
  • 4. Classificatie: vertrouwelijk select * from CSV Conclusion Code Café - Steampipe - select * from cloud; 4 select upper("Title") as title , "Author“ as author from csv.books where "Genre" = 'economics' books.csv
  • 5. Classificatie: vertrouwelijk select * from multiple CSV files Conclusion Code Café - Steampipe - select * from cloud; 5 select "Title" , "Author" , "Genre" , "description" as "Genre Description" , "status_points" as "Genre Status Score" from csv.books b join csv.genres g on b."Genre" = g."genre" books.csv genres.csv
  • 6. Classificatie: vertrouwelijk select * from multiple data sources (CSV, JSON, YAML, INI) Conclusion Code Café - Steampipe - select * from cloud; 6 with books_from_json as ( select e.item ->> 'title' as title , e.item ->> 'author' as author .. from json_file b cross join jsonb_path_query(b.content, '$.books[*]') as e(item) where b.path like '%books.json' ) , books_from_csv as ( select "Title" as title , "Genre" as genre from csv.books ) select bj.title , bc.genre .. from books_from_json bj join books_from_csv bc on bj.title = bc.title books.csv books.json
  • 7. Classificatie: vertrouwelijk Query for Compute Instances on Oracle Cloud Conclusion Code Café - Steampipe - select * from cloud; 7
  • 8. Classificatie: vertrouwelijk Query the Cloud Conclusion Code Café - Steampipe - select * from cloud; 8 OCI REST API Calls Result in tabular, csv, json format
  • 9. Classificatie: vertrouwelijk Steampipe query features • Output format: table, json, csv • Named queries (defined in .sql file, reused like views in SQL statements) • Interactive shell • Batch mode (background, one or more .sql scripts) • => write results to standard output • steampipe query oci-vms.sql --output json > oci_compute_instances.json • Service Mode => start embedded PostgreSQL database – allowing access from any tool that can talk to PostgreSQL • leverage Steampipe database views • Container image is available • Aggregator connections • one query across multiple data sources • Cast values – for example text to int (::int) Conclusion Code Café - Steampipe - select * from cloud; 9
  • 10. Classificatie: vertrouwelijk Steampipe – plugin framework with embedded PostgresSQL Conclusion Code Café - Steampipe - select * from cloud; 10
  • 11. Classificatie: vertrouwelijk Embedded PostgreSQL • each plugin corresponds to a database schema Conclusion Code Café - Steampipe - select * from cloud; 11
  • 12. Classificatie: vertrouwelijk Embedded PostgreSQL • each plugin corresponds to a database schema • each resource is exposed as a database view • data populated from external data source through foreign data wrapper Conclusion Code Café - Steampipe - select * from cloud; 12 imap_message gitlab_branch azure_storage_blob aws_ec2_instance twitter_search_recent {csv-file-name}
  • 13. Classificatie: vertrouwelijk Under the hood • Steampipe leverages PostgreSQL Foreign Data Wrappers to provide a SQL interface to external services and systems. • Steampipe uses an embedded PostgreSQL database and you can use standard Postgres syntax to query Steampipe. • note: no data is persisted in Steampipe: every table access may correspond to one (or more) API calls • query results are cached for 5 minutes by default (configurable per data source) • select only columns actually needed. Do NOT use select * • [For non-key columns,] data for all rows must be collected, and then filtered • custom Steampipe plugins can be created and easily be integrated • Steampipe plugins are programmed in Go Conclusion Code Café - Steampipe - select * from cloud; 13
  • 14. Classificatie: vertrouwelijk Steampipe Dashboards • Steampipe can run dashboards that consolidate and visualize results from Steampipe queries • Dashboards are defined in HCL (language of Terraform) • per element: define title, SQL query, type of widget, width • 100s of predefined dashboards are available • Data can be downloaded from Dashboard • SQL queries can easily be copied from Dashboard • Queries can be parametrized – with values coming from user input UI elements – text or select (populated from SQL) Conclusion Code Café - Steampipe - select * from cloud; 14
  • 15. Classificatie: vertrouwelijk Steampipe Benchmarks & Controls • a generic mechanism for defining and running control frameworks such as CIS, NIST, HIPAA, etc, as well as your own customized groups of controls • simplified, consistent mechanism for defining, running, and returning output from disparate benchmark and control frameworks. • checks in the SQL results for violations of rules & recommendations • on security, cost control Conclusion Code Café - Steampipe - select * from cloud; 15
  • 16. Classificatie: vertrouwelijk Summary • steampipe.io • very convenient way of retrieving and combining resource (meta) data from many different sources • valuable for development and operations • not for runtime data retrieval in applications Conclusion Code Café - Steampipe - select * from cloud; 16

Editor's Notes

  • #14: https://steampipe.io/docs/sql/querying-json