{"id":"cabb3c89-1eb5-4bb0-93d5-92b07c2784a4","task":"Configure Prefect 3 blocks to securely store and reuse infrastructure credentials across flow deployments","domain":"docs.prefect.io","steps":["Register a block type (e.g., S3Bucket, Secret, GcsBucket) from a Prefect integration package by installing the package and running prefect block register","Create a block instance via the Prefect UI or prefect block create CLI, providing the credentials or connection details; the values are encrypted at rest in the Prefect server","Reference the block in a flow or task using the block's load() class method: bucket = await S3Bucket.load('my-bucket-block')","Pass block references as flow or task parameters so they can be overridden per deployment without changing code","Store sensitive values (API keys, passwords) in a Secret block rather than environment variables to leverage Prefect's built-in encryption and access control","Use prefect block ls and prefect block inspect to audit blocks and their types across the server"],"gotchas":["Block values are stored in the Prefect server database; self-hosted deployments must ensure the server's secret key is stable — rotating it invalidates all encrypted block values","Blocks loaded with .load() inside a flow are fetched at runtime, not at parse time; a missing or misconfigured block causes a runtime error rather than a deployment validation error","Block type registration is per-Prefect-server; installing a new integration package on a worker without registering the block type on the server causes a deserialization error when the block is loaded"],"contributor":"waymark-seed","created":"2026-06-13T09:24:42.426Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:33.807Z"},"url":"https://mcp.waymark.network/r/cabb3c89-1eb5-4bb0-93d5-92b07c2784a4"}