This example is a thin wrapper around the shared bulk_ingestion_pipeline pattern.
It demonstrates:
- a private OCI Functions application with
fnbulkload,fncollector, andfnadbsetup - an Object Storage bucket with object events enabled
- OCI Events invoking the bulk loader function
- asynchronous handoff through OCI Streaming
- Service Connector Hub delivery into the collector function
- persistence into Autonomous Database
Figure 1. bulk_ingestion_pipeline runtime flow: fnadbsetup bootstraps ADB, a new object in the bucket triggers OCI Events, fnbulkload reads the file and publishes one message per record to Streaming, Service Connector Hub invokes fncollector, and the collector persists the final records in Autonomous Database.
landing-zone.yaml: payload describing the bulk ingestion patternmain.tf: thin wrapper around the shared patternproviders.tf: OCI provider configurationvariables.tf: provider and secret inputsoutputs.tf: useful outputsterraform.tfvars.example: example provider valuesfunctions/: bulk loader, collector, and ADB bootstrap function sources
cp terraform.tfvars.example terraform.tfvars
tofu init
tofu planAfter tofu apply, validate the pattern by:
- uploading a JSON file into
FoggyKitchenIOTBucket - confirming that OCI Events invokes
fnbulkload - confirming that Service Connector Hub stays
ACTIVE - verifying that the uploaded records are persisted in
APPUSER.IOT_DATA
The smoke test used for this example uploaded a file containing:
device895device654device401
and verified the final rows in Autonomous Database:
('device895', 89.5, 19.1)
('device654', 65.4, 24.6)
('device401', 40.1, 30.2)
Figure 2. The Object Storage bucket FoggyKitchenIOTBucket is available and configured to emit object events for new uploads.
Figure 3. The Functions application contains the three runtime components used by this pattern: fnbulkload, fncollector, and fnadbsetup.
Figure 4. The OCI Events rule is enabled and routes com.oraclecloud.objectstorage.createobject events from the ingestion bucket to fnbulkload.
Figure 5. Service Connector Hub is ACTIVE and connects the stream source to the collector function target.
Figure 6. The connector wiring shows the expected bulk-ingestion handoff from Streaming to fncollector.
Figure 7. Autonomous Database is available and ready for both bootstrap and application-side inserts.
Figure 8. Final verification in APPUSER.IOT_DATA confirms that the uploaded JSON file was expanded into individual records and persisted successfully.
- this example is intentionally based on the complete architecture explored in
lesson9, but without API Gateway orfninitiator - the ingestion entry point is the Object Storage bucket, not an HTTP endpoint
- ADB passwords are required because the pattern includes both bootstrap and application-side database access
Licensed under the Universal Permissive License (UPL), Version 1.0.
See LICENSE for details.
© 2026 FoggyKitchen.com - Cloud. Code. Clarity.







