I want to propagate a file to all the fastly POPs as soon as the file is published by some worker or external upload monitoring service.
If my content is propagated through several POPs then each and every new request will initiate a request to my service, instead of propagating the file once the content will be transferred for each and every POP.
If I'm using S3 then I would create a Lambda function to publish the file to the CDN directly after the upload.
I was thinking about using the API or the VCL (or both) but I just fail to understand the terminology.
As far as I can tell, at this time, Fastly does not support pre-population (push) of edge caches. If you want to prevent each and every single POP from fetching the same content from your origin server, as you mentioned, I suggest you to take a look at Fastly's Origin Shielding. It allows you to designate a specific Fastly POP to serve as a shield for your origin server. This shield POP reduces the inbound load on your origin server by serving cached data to the other POPs in Fastly's network. It ensures that Fastly will only hit your origin server when the requested content is not available on the shield server.