In (1), I assume you trying to share the same repository across sites. That
would work, we do not assume any tight bound on latencies for S3 or
DynamoDB, and there is no direct connection between different instances.
However it may be slow, and it may be expensive (depending on how you pay
Amazon, pumping data outside of a region can mean paying a lot).
I think (2) might work, at least for core functionality. That uses only
immutable data operations and never lists objects, so the cache should
work. Bear in mind that this is not a tested configuration. Also some
functions require read-after-write consistency, and will have some minor
failure modes. Things like garbage collection and hooks will probably
best be configured and run only from the directly connected instances.