New to Kestra?
Use blueprints to kickstart your first workflows.
Provision AWS S3 buckets per team and register them as governed assets in Kestra. Track ownership, enforce policies, and manage cloud infrastructure at scale.
Provision cloud infrastructure as code and turn raw AWS resources into first-class, governed assets with Kestra. This blueprint creates one Amazon S3 bucket per selected team using the AWS CLI, then registers each bucket as a discoverable AWS_BUCKET asset so downstream workflows can reference it explicitly. It solves the common problem of "ghost" cloud resources: buckets that exist somewhere in an account but have no clear owner, no lineage, and no catalog entry.
teams input of type MULTISELECT lets the user pick any combination of Business, Data, Finance, and Product.for_each task (io.kestra.plugin.core.flow.ForEach) iterates over the selected teams.create_bucket task (io.kestra.plugin.aws.cli.AwsCLI) runs aws s3 mb s3://kestra-{team}-bucket, slugifying the team name with the slugify filter.assets.outputs entry of type: AWS_BUCKET, attaching metadata for provider (s3) and the canonical address (s3://...), so the bucket is published to the Kestra asset catalog as it is created.pluginDefaults injects AWS credentials and region into every io.kestra.plugin.aws task and sets allowFailure: true so a single failed creation does not abort the run.kestra-<team>-bucket.AWS_BUCKET asset for every bucket, complete with provider and address metadata.Platform engineers, DevOps and SRE teams, and infrastructure owners who manage shared cloud resources across multiple internal teams and need ownership and lineage, not just provisioning.
The AWS CLI and IaC tools create buckets, but they do not give you a living catalog of who owns what or which workflows depend on each resource. Kestra adds event triggers, automatic retries, and full execution lineage on top of declarative YAML, and its asset model captures the one thing the AWS toolchain cannot: the relationship between infrastructure and the workflows that consume it. Buckets become catalog entries that downstream flows reference as typed inputs, giving you governance across teams from a single control plane.
AWS_ACCESS_KEYAWS_SECRET_ACCESS_KEYAWS_REGIONkestra.company namespace.teams input.AWS_BUCKET asset and its metadata.teams input values to provision more buckets.aws s3 commands.io.kestra.plugin.aws.s3.Upload) that consumes a bucket as an assets.inputs entry and emits derived file assets, establishing end-to-end lineage.