-
Notifications
You must be signed in to change notification settings - Fork 86
Description
context
Our organization makes heavy use of sam-cli for managing stack operations - not just for serverless application model resources, but all CFN stacks.
Our primary reason for doing so is the convenience that sam-cli provides ...
- It's relatively easy to grasp the use of commands like sam build and sam deploy.
- The SAM CLI config file provides support for specifying all aspects of our stacks in a source-controllable manner - not just parameters and tags, but also capabilities, role arn, stack name, etc.
We're pretty happy using it, with one very notable exception: Templates making use of the Fn::ForEach intrinsic function will not build.
This has been a reported issue for over 2 years, and though it seems like it could be relatively easy to resolve, there's been little sign of interest from the team in addressing the issue - basically no engagement in the issue thread, after the initial acknowledgement, and no response to a PR opened by a community member.
So, that brings us to rain, which we're assessing, to determine whether it would suit us a replacement for how we currently use sam-cli, given that the Fn::ForEach intrinsic function should seemingly work fine via rain.
ask
In reviewing the rain docs, it seems as though we could use it in a similar fashion to how we currently use sam-cli, but with one very notable exception: It seems as though rain requires most stack specifications to be passed in via CLI flag, rather than allowing their specification via a source-controllable config file.
I see that rain deploy accepts a file path to a --config file, but that only parameters, tags, and a stack policy can be specified in that file, in alignment with the CFN template configuration file one would use with a CodePipeline automation (as specified in the TemplateConfiguration configuration property).
Is there currently support, or interest in adding support, for other configuration properties specified on that same page - e.g. RoleArn, StackName, TemplatePath, Capabilities, etc.?
In case it helps to see an example of how we're currently specifying our stacks via samconfig, here's an example ...
ExampleStack:
global:
parameters:
capabilities: []
confirm_changeset: true
image_repositories: []
parameter_overrides:
- ExampleParam1=example-value
region: us-west-2
role_arn: arn:aws:iam::<accountId>:role/...
s3_bucket: build-artifacts-<accountId>
s3_prefix: cloudformation/sam-cli/example-template
stack_name: example-stack
tags: owner=<team> budget=<product>
template: src/example-template.yamlI tried searching existing issues for similar prior requests, but have so far only found one that seems related in issue #350, and that conversation didn't progress very far.
Would this somehow violate a design conceit of rain? Am I off base in thinking this would have value to many users? That I can't find much discussion of it makes me think I might be missing something. I realize we can probably roll our own solution by piping to or from rain, but it seems like the sort of thing for which first class support could make sense.
Thanks in advance for any feedback the rain community can offer.