The question is a bit confusing and the "every function that starts the same lowers the S3 code" part generates different interpretations, but let’s get to the point:
Function Code
If you are referring to Function Code vs Invoke(start of container execution) I do not believe that it "downloads" your code at each run.
First, the container can be reused for an indefinite period of time, so if the container is "hot" the execution can (or not) consider the code it has previously run.
Second, the "Cold start" of the container already takes a considerable time, now, imagine if the package(zip, jar and etc) has 50MB and the container needs to download the code at each run, the latency of this would be a little bizarre and its cost in S3 would also rise.
Although I don’t find the official documentation of how this core part works it doesn’t make much sense to believe that your code is downloaded at every run.
Note: Do a test, deploy version 1 of Lambda Function and then go to S3 (update only on S3) and update the package to version 2 (some different print and so on). See if during all runs version 2 has been used.
Resource Consumption in S3
If you are referring to the access your code makes to resources in S3 (example: your code uploads or downloads images) then yes the S3 cost policy is normally applied.
In case you discover something different post here, always found a little obscure the documentation of AWS.
Yes, it’s a request like any other. Take a look at this documentation, below is an example quoting S3: https://aws.amazon.com/pt/lambda/pricing/
– Caio Guioti