aws / copilot-cli

The AWS Copilot CLI is a tool for developers to build, release and operate production ready containerized applications on AWS App Runner or Amazon ECS on AWS Fargate.
https://aws.github.io/copilot-cli/
Apache License 2.0
3.51k stars 409 forks source link

Feature Request: Shared service configuration within an application #2699

Open jlucas91 opened 3 years ago

jlucas91 commented 3 years ago

I'm finding that the services within my application are sharing a lot of their configuration. Their sidecars (logging, datadog agent), addons (SQS permissions), image config, and secrets are all very, very similar.

Right now I have to copy/paste the entire service configuration between services. This is disincentivizing me from creating new services (ex. single purpose queue consumers that share the same source code), which is a bummer! I can forsee it being a big pain keeping them all in sync, particularly when adding/removing secrets. I'd love to be able to define a base config that the others inherit from/can override.

Do you have any plans to add something like that? Are y'all seeing similar concerns from other users and if so is there a way they're working around it? The best workaround I can think of is templating/generating the manifests myself, which I'd love to avoid.

efekarakus commented 3 years ago

oh that's a very cool idea!

One issue related to manifest declarations is this one: https://github.com/aws/copilot-cli/issues/2590 but we didn't have a feature request before that would establish a baseline config that all services can share that can be overridden. Thanks for creating the feature request!

jlucas91 commented 3 years ago

Sweet! I also like the {{.Env}} parsing. That would be great as well.

Thanks for all the work you're doing. Very bullish on copilot as a whole and excited to see where y'all take it.

gautam-nutalapati commented 2 years ago

I have a feedback on this issue. I see similar duplication across services, especially add-ons files. e.g. All services require common IAM permission for X-Ray (to enable tracing) and for OpenSearch (Log-Forwarding). Even for a minor fix, all service templates have to be updated. We can have an additional S3 bucket created by copilot per App where these common templates are kept. Copilot can pull those as well when it bundles all add-ons templates into one.

ssyberg commented 9 months ago

👍🏼 to this and #5525 - more than anything it's just very unDRY to have a bunch of manifests that are almost identical