the various github-supplied actions are good example:
https://github.com/actions/setup-python
the action.yml here is the metadata for an action (and you invoke this action by simply referencing actions/setup-python - perhaps with a sha or tag or something to pin it - and the runner clones and runs it, making custom actions simply code with no build process etc necessary which is very nice to not have to bootstrap your build process with a build process eg docker build)
see the “runs” section there - it invokes node20 to run the action, and specifies some code to run to cleanup
in the src here we can see what i was mentioning as well about having bi-directional comms with the CI system
https://github.com/actions/setup-python/blob/main/src/setup-python.ts
line 54 & 55 we have core.getInput and core.getMultiLineInput, 59 we have core.warning (so logs are formatted and filterable etc - these messages also show up in the build summary; similarly line 100 we have core.startGroup), 154 is core.setFailed so you get proper failure reasons rather than “the last line of stderr”
now, none of this is specific to running in a real language - in fact i believe all this information is communicated over stdout or stderr - but the ease of simply creating a repo with code in it, and having that as a reusable CI step without worrying about docker container hosting, and having that able to have semantic meaning for its inputs and outputs (and proper reliable escaping of the special CI communication prefixes) is something that kinda doesn’t exist outside of this style system
that… is unlikely… they took 7 years to migrate TO AWS, and the last i heard they completed a massive migration to IPv6 on AWS in 2021… it’d take them a massive amount of engineering and time to migrate off AWS
also it’d be massive news… netflix is basically THE number 1 AWS “success” story