rubyonjets/jets

Support for CloudFormation notifications

Opened this issue · 0 comments

Summary

Jets uses CloudFormation under the hood to handle deployments. CloudFormation will send stack events to a SNS topic if configured when calling create/update_stack. Allow jets users to configure an SNS topic to receive jets deploy updates

Motivation

We would like to be notified about jets deployments (to enable email/webhook integrations). Our use case is to enable Slack notifications when our app is updated. This provides visiblity to our entire ops team and simplifies debugging production issues.

Guide-level explanation

If desired, add a config variable to application.rb with a SNS topic ARN to enable sending stack updates.

Reference-level explanation

Reading the code, it seems that Jets::CFN::Ship needs to pass notification_arns into the aws sdk client:

    # options common to both create_stack and update_stack
    def stack_options
      {
        stack_name: @parent_stack_name,
        capabilities: capabilities, # ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
        # disable_rollback: !@options[:rollback],
        notification_arns: @options[:notification_arns]
      }.merge!(template.to_h)
    end

I'm not sure how this project would like to get those values from the user.

Drawbacks

It could increase jets support burden. Setting up SNS topics to forward messages is opaque and could confuse first time users?

Unresolved Questions