Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify properties for serialized behavior #79

Open
benkehoe opened this issue Feb 1, 2020 · 6 comments
Open

Specify properties for serialized behavior #79

benkehoe opened this issue Feb 1, 2020 · 6 comments

Comments

@benkehoe
Copy link

benkehoe commented Feb 1, 2020

I'd like to create an AWS::S3::BucketNotification resource to fix a longstanding problem in CloudFormation. And when I do, I'd like to enable individual notification configuration items to be managed separately. But because the API only supports updating the entire notification configuration, I need to serialize access to the notification configuration for a given bucket. I plan to do with a resource provider that relies on a user-account-side mechanism involving an SQS FIFO queue. It would be great if, in my schema, I could specify a property or set of properties that would cause all resources with the same values for those properties to have their requests serialized (but resources with different values for those properties could be processed in parallel).

@rjlohan
Copy link
Contributor

rjlohan commented Feb 1, 2020

I like this concept, it's going to take some thinking on how to support this in the service.

@benkehoe
Copy link
Author

benkehoe commented Jun 9, 2020

Another use case is that the CloudFormation type registry only allows one in-flight operation at a time on a given type. So if I have multiple AWS::CloudFormation::ResourceVersion resources with the same TypeName, I need to manually serialize those resources using DependsOn (example).

@benbridts
Copy link

Adding DynamoDB tables as a use case (from the docs):

AWS CloudFormation typically creates DynamoDB tables in parallel. However, if your template includes multiple DynamoDB tables with indexes, you must declare dependencies so that the tables are created sequentially. Amazon DynamoDB limits the number of tables with secondary indexes that are in the creating state. If you create multiple tables with indexes at the same time, DynamoDB returns an error and the stack operation fails.

@benkehoe
Copy link
Author

Adding DynamoDB tables as a use case

This might be a separate request, as it is a global concurrency limit (possibly soft), rather than a strict serialization based on the value of a property or set of properties. I'm tempted to say such a concurrency limit belongs in the registry API rather than the schema.

@benbridts
Copy link

benbridts commented Jun 11, 2020

This might be a separate request

You're right. In cases where ordering doesn't matter Concurrency: 1 could also solve the serialization (if it can be currently solved with DependsOn).

@rjlohan If i create a new ticket for that, should it go in the Coverage Roadmap?

@rjlohan
Copy link
Contributor

rjlohan commented Jun 11, 2020

This might be a separate request

You're right. In cases where ordering doesn't matter Concurrency: 1 could also solve the serialization (if it can be currently solved with DependsOn).

@rjlohan If i create a new ticket for that, should it go in the Coverage Roadmap?

Yeah put it there. It'll require at least some service side changes to understand the directive whether it comes from template or type schemas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants