TLDR: Loads of breaking changes, with good reasons.
Overall this release is meant to serve the future, not the past. So this release has many "bunched up" breaking changes which should reduce the need for breakng changes in the future, and improve maintainability and thus release frequency dramatically.
-
Drop generated field prefixes, making usage of the library way more natural. Especially its now possible to use this library just from the AWS provided cloudformation documentation without having to lookup the field prefixes in a second tab.
-
Drop support for GHC < 9.2. This simplifies the generator significantly. If you need older GHCs use the old versions of stratosphere. Dependency of dropping field prefixes. This library relies now on
NoFieldSelectors
internally. -
Fully re-written generator, which works directly on the raw, un-preprocessed AWS specification, this should increase maintainabiltiy and release frequency.
-
Re-aligned generated module / builder function structure, removing all manual overwrites for dismabiguation.
-
Drop of the lens dependency, replaced with the
set @"PropertyName" value
idiom. -
Split to one package per AWS service. This induces a small overhead on the user to select the packages the user needs, but reduces compilation time significantly. Also this works around limitations on OSX linker issues on many modules. Fixes: #111 #102
-
Change
Val
toValue
, its recommended to include stratosphere qualified where it clashes withaeson
imports. -
Remove support for custom enum types stratosphere used to tag on to the raw spec. Fixes: #195
-
Update resource specification document to version 112.0.0 and re-generate all services. Fixes: #140
TODO:
- Render in-line haddocks or accept they are gone for the moment.
- Add and require aeson-2 support
- Maintainer change to Markus Schirp
- Drop support for pre GHC 9.0, user older releases if you are on these GHCs. This reduces maintainer overhead.
- Add github actions based CI
- Fix missing
.cabal
file in distribution
- Update resource specification document to version 18.2.0
- Update resource specification document to version 17.0.0
- Added
.cabal
files to repo (#179) - Added
PATCH
constructor forHttpMethod
(#176)
- Update resource specification document to version 16.3.0
- Update resource specification document to version 16.2.0
- Update resource specification document to version 15.3.0
- Update resource specification document to version 15.1.0
- Update resource specification document to version 14.3.0
- Update CI for GHC 8.8
- Update resource specification document to version 12.3.0
- Update resource specification document to version 11.6.0
- Update resource specification document to version 11.4.0
- Fixed
ImportValue
not allowingVal
as argument (thanks @mbj!) - Update resource specification document to version 10.4.0
- Update resource specification document to version 10.3.0
- Update resource specification document to version 10.2.0
- Update resource specification document to version 8.1.0
- Update lambda runtimes list
- Update resource specification document to version 7.1.0
- Added NodeJS10x Lambda runtime (@Gosha)
- Update resource specification document to version 6.3.0
- Update resource specification document to version 6.0.0
- Update resource specification document to version 5.0.0
- Update resource specification document to version 4.1.0
- Update resource specification document to version 3.4.0
- Update resource specification document to version 3.3.0
- Update resource specification document to version 3.0.0
- Update resource specification document to version 2.29.0
- Use a GADT for
Val a
so it is properly typed. This shouldn't break any programs that produced valid CloudFormation templates, but it should increase safety for templates that use intrinsic functions. This also allows us to properly implement some more intrinsic functions, likeNot
. See #120 - Added the
Fn::Not
intrinsic function. Fixes #80
- Don't encode
Bool
,Int
, andDouble
values as strings in JSON. See: - Use
-O0
when compilingstratosphere
- Update resource specification document to version 2.28.0
-
BREAKING CHANGE: We nuked the huge
ResourceProperties
sum type, which greatly reduced compile times, memory usage, and binary sizes for programs that depend onstratosphere
. See:To migrate to this version, you should just have to remove any uses of the old
ResourceProperties
sum type and pass your resource configuration directly intoResource
:@@ -32,7 +32,6 @@ dbTemplate = rdsMaster :: Resource rdsMaster = resource "RDSMaster" $ - RDSDBInstanceProperties $ rdsdbInstance "db.t2.micro"
- BREAKING CHANGE: We removed all
FromJSON
instances to reduce compile time and memory, and also to allow us to make other improvements thatFromJSON
was blocking. See #117
- Update resource specification document to version 2.25.0
- Added
Condition
field to resources
- Update resource specification document to version 2.21.0
- Update resource specification document to version 2.19.0
- Update resource specification document to version 2.18.1
- Update resource specification document to version 2.18.0
- Update resource specification document to version 2.16.0
- Update resource specification document to version 2.15.0
- Update resource specification document to version 2.12.0
- Update resource specification document to version 2.10.0
- Remove dependency on
aeson-qq
- Update resource specification document to version 2.8.0
- Update resource specification document to version 2.6.0
- Update resource specification document to new unspecified version
- Update resource specification document to new unspecified version
- Update resource specification document to version 2.5.0
- Update resource specification document to support EKS
- Update resource specification document to version 2.4.0
- Update resource specification document to version 2.3.0
- Update resource specification document to new unspecified version
- Update resource specification document to version 2.2.0
- Update resource specification document to version 2.1.0
- Bug fix:
AWSTemplateFormatVersion
was being formatted incorrectly in JSON.
- Update resource specification document to some new unspecified version.
- Add new
nodejs8.10
to lambda
- Fix name of
AutoScalingRollingUpdatePolicy
SuspendProcesses
parameter - Update list of AWS Lambda
Runtime
values
- Add compatibility with GHC 8.4.1
- Fix
Equals
function requiringVal Bool
arguments instead ofVal a
- Add
Metadata
field toResource
type
- Update resource specification document to version 2.0.0
- Fix missing
AWS::ElasticLoadBalancingV2::ListenerCertificate
resource
- Fix JSON instances for non-codegen code.
- Allow the
Split
function to useVal a
in its second argument.
- BREAKING CHANGE: Renamed lenses for non-generated code to match naming conventions of generated code.
- Update resource specification document to 1.14.0
- Update resource specification document to some unspecified new version.
stratosphere
now compiles with no warnings.
- Update resource specification document to version 1.13.0
- Update resource specification document to some unspecified new version.
- Update resource specification document to version 1.12.0
- Update resource specification document to version 1.11.0
- Update resource specification document to version 1.10.0
- Update resource specification document to version 1.8.0
- Update resource specification document to version 1.7.0
- Update resource specification document to version 1.6.0
- Update resource specification document (no version given in doc)
- GHC 8.2.1 compatibility
- Add
Export
field to theOutput
type. This allows you to declare cross-stack references.
- Made
Val
andValList
more type-safe by moving some constructors toValList
and being more specific with types in functions that only acceptText
parameters. Specific examples include:Join
andSelect
now require aValList
argumentBase64
andJoin
now work only onVal Text
, notVal a
GetAZs
andSplit
are now inValList
, notVal
- Created
ImportValueList
as aValList
alternative toImportValue
. - Added support for
Fn::Sub
intrinsic function.
-
BREAKING CHANGE: Added
ValList
type. This new type allows you to reference parameters that are already list types. Previously you had to use some kludgy workarounds. For example, you can nowRef
a parameter of typeList<AWS::EC2::AvailabilityZone::Name>
.Every type that used to be
[Val a]
is nowValList a
. If you use theOverloadedLists
pragma, you might not have to change any of your code. Otherwise, you must wrap existing lists in theValList
constructor. -
BREAKING CHANGE: The newtype wrappers
Integer'
,Bool'
, andDouble'
are no longer required. CloudFormation expects numbers and bools to be JSON strings. These newtypes used to be necessary so we didn't use JSON numbers/bools. Now the conversion is handled internally, and users don't need to worry about this when usingstratosphere
.
- Update resource specification document (no version given)
- Update the resource specification document to version
1.4.2
- Update the resource specification document to version
1.4.1
- Update the resource specification document to version
1.2.1
- Manually write out all JSON instances to speed up compilation
- Fix bug in CloudFormation specification where
EvaluationPeriods
was accidentally set toDouble
.
- Derive the
Eq
type class for everything. This is useful when comparing two templates. - Added the new
Fn::Split
function. - Fix error in resource specification document where
AWS::AutoScaling::AutoScalingGroup.Tags
was mistakenly calledAsTags
. - Fix error in resource specification document where the two properties
Image
andName
inAWS::ECS::TaskDefinition.ContainerDefinition
were incorrectly marked as not required, even though they are required. - Fix JSON instances for auto scaling group update policies
- Updated resource specification document to version 1.1.1.
- Backwards-incompatible: We now use the official AWS JSON spec document to auto-generate types. This means there is no more Python scraper and custom JSON schemas. The behavior of the library is exactly the same, but a ton of resource names changed to match official the official AWS names. On the plus side, we now have 100% service coverage!
- Fixed a test suite failure caused by bleeding edge HLint version.
- Added Dynamo DB table resources (@ababkin)
- Fix the Python docs scraper mishandling the
required
value in some cases, and also missing some properties of resources (@amar47shah) - Added a ton of SNS and SQS resources (@ababkin)
- Added a experimental checker for duplicate resource names (@amar47shah)
- Breaking change: The
DependsOn
property previously allowed lists ofVal Text
, when in fact CloudFormation only accepts literalText
values. The new type ofDependsOn
isMaybe [Text]
. - Added
AWS::ElastiCache::CacheCluster
resource (@MichaelXavier) - Added many
AWS::Lambda
resources and associated resource properties (@ababkin) - Added new
ImportValue
CloudFormation function (@timmytofu) - Added tons of AWS Kineses resources (@MichaelXavier)
- Added a lot of Api Gateway resources (@ababkin)
- Allow setting
LensPrefix
in JSON model files to avoid name collisions (#27)
- Fix Haddock parsing for
FindInMap
. We now run haddock in CircleCI so we shouldn't see a regression like this in the future.
- Added S3 buckets and bucket policies
- Added CloudTrail Trail (Thanks @timmytofu!)
- Added the
FindInMap
intrinsic function. (Thanks @MichaelXavier!) - Added
SecurityGroupEgress
andSecurityGroupIngress
rules. (Thanks @MichaelXavier!) - Fixed type of ELB policy using the more specific
NameAndValue
type. (Thanks @MichaelXavier!)
- Added
UserName
property to the IAM User resource. (Thanks @timmytofu!) - Added IAM Group and Role name parameters. (Thanks again @timmytofu!)
- Update
aeson-pretty
to version 0.8 so we can stay in stackage nightly. - Fix not exporting resource name lens.
- Removed some dependencies that crept in so we can build against stackage
nightly and use GHC 8. These were actually dependencies of
stratosphere-gen
and aren't needed forstratosphere
.
- Added all of the resources and resource properties for Auto Scaling Groups.
- New AutoScalingGroup example
- Added UpdatePolicy, CreationPolicy, and DependsOn
- Small bug fix for "style" test when using the cabal distribution
- Initial release with all Template components implemented along with a huge set of Resources.