Let’s apply more of what you’ve learned to our Refuge composition. Looking at the code, we can see that there are many similarities between the refuge-web-app, refuge-api, and refuge-notifiication-worker services. Namely, each is composed of the following resources:
InstanceProfile (and associated role and policy)
A few differences aside, all of these resources are configured in pretty much the same way. Let’s pull that common structure out to a function, both to reduce duplication and to allow us to focus on the interesting parts of our services, rather than the boilerplate they have in common. We’ll use an approach similar to the loadbalancer ...