aws / aws-cdk-rfcs

RFCs for the AWS CDK

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SSM Document as Objects

ZachBien opened this issue · comments

Description

This library provides a utility implement SSM Documents using code. The SSM Document objects can be used to generate the CDK document contstruct and allows you to simulate a document execution locally.

Problem Statement

Writing SSM Docuemnts is cumbersome because interacting with the JSON or YAML documents provides little compile time support for errors. While the SSM UI provides a rich experience for creating documents, the SSM UI provides no ability to reuse steps across documents.

Testing documents can only be performed by running the SSM Execution which is time-consuming. There is also no way to mock results in SSM Execution so developers are forced to create the necessary infrastructure in the AWS account prior to executing the SSM Document.

Exceptions are at times difficult to find or understand from the SSM Execution because sometimes the underlying issue is hidden and the error that is propagated is unrelated.
Solution

This library provides a high level abstraction of the SSM Documents where each step as well as the document itself are objects. The properties required for construction of these objects correspond to the settings applicable to them making them intuitive to create.

You would use this if you want:

  1. Ability to test without deploying resources or running a real SSM execution on AWS
  2. Ability to reuse steps between docs by reusing available objects
  3. Build higher level logical groupings of reusable groups of steps ("Patterns")
  4. Easy interface for creating Docs
  5. Test existing documents by importing them from a file (or string) and simulate them locally

Roles

Role User
Proposed by @ZachBien
Author(s) @ZachBien
API Bar Raiser @eladb
Stakeholders

See RFC Process for details

Workflow

  • Tracking issue created (label: status/proposed)
  • API bar raiser assigned (ping us at #aws-cdk-rfcs if needed)
  • Kick off meeting
  • RFC pull request submitted (label: status/review)
  • Community reach out (via Slack and/or Twitter)
  • API signed-off (label api-approved applied to pull request)
  • Final comments period (label: status/final-comments-period)
  • Approved and merged (label: status/approved)
  • Execution plan submitted (label: status/planning)
  • Plan approved and merged (label: status/implementing)
  • Implementation complete (label: status/done)

Author is responsible to progress the RFC according to this checklist, and
apply the relevant labels to this issue so that the RFC table in README gets
updated.