All notable changes to aws organization formation will be documented in this file.
BREAKING CHANGES:
- v1.0.0: execution role under which org-formation is ran requires the ec2:describeRegions permission
version: 1.0.17
- fix: improved backoff for account creation and type registration
version: 1.0.16
- fix: access denied issue when running init-pipeline passing --build-account-id as an argument
version: 1.0.15
- fix: loading credentials from ~/.aws/configuration using the
--profileflag
version: 1.0.14
- fix: when changeset is not found during
execute-change-setthe cli command returns an error
version: 1.0.13
- fix: cdk tasks use
--forcewhen deleting stacks - chore: usage of AWS SDK v3 (upgrade from V2)
- fix: deleting stacks without explicit concurrency settings will default to settings passed to the CLI (instead of 1)
version 1.0.11
- feat: support MaxConcurrentTasks > 0 on update-cdk tasks
- feat: support IgnoreFileChanges on update-cdk, update-serverless.com and apply-tf tasks (allows the task to be skipped if certain files got changed)
- fix: stacks in UPDATE_ROLLBACK_FAILED wont get deleted when attempting to recover from a failed update
- feat: Control Tower (or any other account factory solution) support using the annotate-organization task
version 1.0.9 / version 1.0.10 (redeploy of 1.0.9)
- feat: support
--matchand--devon print & validate commands - feat: support serverless.com V3, by setting the
SLSVersionattribute to3in the task file - fix: allow sub-expression to be a
!ReadFile,!Cmdor other expression
version 1.0.8
- feat: added Terraform support task support (task type:
apply-tf)
version 1.0.7
- feat: allow a development role to be configured on the OrganizationRoot (DefaultDevelopmentBuildAccessRoleName) which will be used when running using
--dev - fix: STS defaults to regional STS which allows deployments to non-default aws regions.
- fix: support cloudformation language extensions:
Fn::ToJsonStringandFn::Length - fix: fail the build if a task gets deleted that has TerminationProtection set to true.
version 1.0.6
- fix: only prevent printing/ validating stacks if an account is added to organization.yml (not prevent printing if an OU got added)
- chore: better perf on update-organization task
- fix: explicitly retry on type registrations that return
DEPLOY_STAGE of status FAILED - feat: allow nunjucks templating context to be passed to cli commands perform-tasks, print-tasks, validate-tasks, update & print-org
- feat: support disableRollback on update-stacks tasks
- feat: allow accounts to be excluded when performing any command (--exclude-accounts '112223344555,112223344555' )
- feat: specify bucket to be used for large template uploads (on validate-tasks, perform-tasks, validate-stacks and update-stacks)
- feat: support closing removed accounts form the organization specifying "CloseAccountsOnRemoval: true" on the OrganizationRoot in organization.yml
- fix: better defaults for the deploy-cdk task: added
--all --require-approval=neverto default deploy and destroy commands - fix: allow matching a single task using
--matchtaking a globPattern (e.g.--match '**/MyTask') or the exact name of a task.
version 1.0.5 (version contained packaging error, got unpublished)
version 1.0.4
- feat: allow
Fn::EnumTargetAccountsto be used in combination with${AccountId},${AccountName},${LogicalId},${RootEmail},${Alias},${Tags.TAGNAME} - feat: dependsOnAccount support for govcloud
- feat: support for ExcludeOrganizationalUnit in organization binding
- fix: EMAIL_ALREADY_EXISTS when importing account using root email for govcloud
- feat: Nunjucks templating support on LocalFile contents of copy-to-s3 tasks
- feat: allow organization binding to be declared as a task-file parameter (Type: 'OrganizationBinding')
- feat: support comma-delimited CloudFormation parameter values
version 1.0.3
- fix: creating a new account doesnt properly display the new account id in the logs (displays [object Object] instead)
version 1.0.2
- feat: support top-level rules in template
- fix: honour taskRoleName when printing tasks
version 1.0.1
- fix: ExcludeOrganizationalUnit throws a validation error.
- fix: No targetId when attaching scp to root
- chore: update runtime deps
version 1.0.0
- feat: AWS GovCloud (US) support (using --partition flags). AWS organizations from the commercial partition will be mirrored to a non-commercial partition e.g. AWS GovCloud (US).
- fix: invalid CRC checksum on zipfile when running init-pipeline
- feat: support for up to 4000 AWS Accounts within an organization
- fix: caching of exported values, therefore improving performance and avoiding rate limiting errors
- fix: template support for --print-tasks
version 0.9.19
- fix: unable to package the initial commit when running init-pipeline.
version 0.9.18
- feat: support ExcludeOrganizationalUnit in binding
- feat: support ServerSideEncryption in copy-to-s3 task
- fix: ensure password policy and alias don't get cleared on init/build
- fix: ensure concurrency settings are re-used when deleting tasks
- fix: add retry and backoff when reading the organization (e.g. using init)
- fix: strip dashes from account names when generating the logical names during init
version 0.9.17
- fix: allow templates without version attribute
- feat: support
!Ref AWS::Partitionin tasks file - feat: allow yaml anchors to be declared in top level
Definitionsattribute - feat: reduce 'not in update create completed' failures when creating new account (due to rate limiting)
- feat: TextTemplating support for organization.yml and task files
- feat: possibility to mix TextTemplating and bindings/expressions
- feat: stack tags
- fix: org-formation init to honor
--cross-account-role-name
version 0.9.16
- fix: missing role in build account when running init-pipeline
version 0.9.15
- BREAKING CHANGE: when using OrgFormationBuild role, this role will be used and must be present in all accounts (also in the build account), more info here
- feat: support for
<<(merge operator) in the organization.yml file. this allows for large organization.yml files to be split out (using<<: Include ./dev-accounts.yml) - feat: better profile support added support for credential process and SSO
- feat: perform tasks will create a state bucket if bucket doesn't exist
- feat: added !Cmd function to execute and capture the output of any shell command
- feat: ofn alias to binary
- feat: init & init-pipeline commands use default region from profiles file.
- feat: support for nunjucks templating on CloudFormation templates
- fix: allow
!Ref CurrentAccountand!FindInMapto be used together in a tasks file. - fix: have init-pipeline create a pipeline that works with the main branch (as opposed to master)
- fix: allow for SAM templates with a globals section to deploy
- fix: set the default buildAccessRoleName for cdk and sls tasks
- fix: race condition deploying/validating/printing templates if update-organization task is placed in an include
version 0.9.14
- Support for moving the org-formation build process out of the master/management account in AWS
- Support for splitting up the CI/CD process (perform-tasks) into multiple
- Organization.yml file gets published to S3 and EventBridge after change (and successful perform-tasks).
- Support for centrally stored parameters using
!Include. - Optimized buildtime on organization.yml file changes.
- Added
CAPABILITY_AUTO_EXPANDto support deploying SAM. - Templates with CloudFormation resolve expressions will get redeployed (as the outcome will be evaluated by Cfn).
- Numerous bugfixes and small improvements.
version 0.9.13
- Added a new command:
print-tasks, which will generate all cloudformation templates and write to disk. - Added
zip-before-putsupport tocopy-to-s3task. - Added support for
!ReadFileand!JsonStringinside CloudFormation templates. - Added functions
!MD5Dirand!MD5File, which can be used in both task files and cloudformation. - Added psuedo parameter
ORG::StateBucketName. - Optimized build time by locally skipping resource providers if task did not change.
- Updated codebuild image used to create new pipelines with to standard:4.0. Note: If you are running a pipeline generated by org-formation, you might want to update the build image for faster provisioning time!
version 0.9.12
- Allow failure tolerance to be set to 0 on validate-tasks command (allows CI/CD processes to fail on validation)
- Added support for
Mappingssection /!FindInMap/!Selectfor task files. - Added functions
!MD5/!ReadFilethat can be used in task files. - Added function
!JsonStringthat can be used in task files. - Added support for
!Ref OrganizationRoot(and other types) in task files. - Fixed bug on
org-formation initwhere tags on the MasterAccount where not added to generated template. - Updating stacks that have state
ROLLBACK_FAILEDwill be retried. - Support for large (> 512000 byte) templates
version 0.9.11
- Added pseudo parameter
ORG::PrincipalOrgID(in tasks file). - Improved parsing of attributes in task files.
- AWSAccount can be used as alias for
CurrentAccountin task file expressions. - Added support for cross account references on
VPCEndpoint.DnsEntries.
version 0.9.10
- Fixed bug where
register-typetasks did not properly register execution role.
version 0.9.8
- Fixed bug with variables in
CustomDeployCommandfor SLS tasks. - Improved validation and error messages for
CustomDeployCommandandCustomRemoveCommand. - Implemented
register-typetask that allows for resource provider types to be deployed using org-formation - Support for
.org-formationrcto configureprofile,configurationFile,stateBucketName&stateObjectoptions
version 0.9.7
- Increased buffer size for tasks ran on the console (update-sls and update-cdk)
- Fixed bug with OU structures that go three levels deep and/or multiple times the same ou name
- Added Support for
!Joinexpressions in task files - Fixed bug in Password Policy validation (Thanks Ralf vd Z)
- Added support for
--organization-fileoption onprint-stackscommand - Init command adds RootEmail to MasterAccount in generated template (Thanks @craighurley)
- Fixed bug where
!CopyValuecauses process to hang - CDK will have CDK_DEPLOY_ACCOUNT and CDK_DEPLOY_REGION env variables set (Thanks @rehos)
version 0.9.6
- Fixed issue where
perform-taskparameters are passed toupdate-stackstask when no parameters where specified on task. - Fixed issue managing state for plugins (
copy-to-s3,update-cdk,update-serverless) that would be included with the same logical name. - Allow
update-organizationtask to be skipped without skipping all other tasks in file - Allow
Skiptask to be overwritten in dependent tasks - Force deployment of tasks by setting
ForceDeployattribute to true on command line, include task or task - Override verbose logging of tasks by setting
LogVerboseattribute to true on include task or task - Have CodePipeline created by
init-pipelinecommand 'poll for updates' - Allow for custom OrganizationAccountAccessRole name per
Accountor perOrganizationRoot - Added
--cross-account-role-nameflag toinitandinit-pipelinecommands to initialize organizations that use a different name for the cross account access role. - Fixed a bug that caused support level (e.g. enterprise) to not be updated when account got create with a support level attribute
- Improved suggestions on how to clean up resources removed from task file (added options like --profile)
- Fixed an issue where perform tasks threw an circular dependency error but instead the graph for failed tasks was too long.
version 0.9.5
- Added
StackPolicyattribute to update-stacks tasks - Added
UpdateProtectionattribute to update-stacks tasks and update stacks command. - Added
Skipattribute to any task (will skip task execution but continue, also with dependent tasks) - Improved logging
- Added Parameter support to tasks file:
-- Parameters can be declared in
Parameterssection -- Parameters can be used in!Refand!Subor as part of other expressions - Added
!CopyValuefunction to tasks file which can be used to reference to a stacks output. - Added parameter support to CDK tasks
- Added parameter support to SLS tasks
- Improved profile configuration support.
version 0.9.4
- Added update-cdk task type to perform-tasks to support deployment of cdk workloads
- Added update-serverless.com task type to perform-tasks to support deployment of serverless.com workloads
- Added copy-to-s3 task type to perform-tasks to support uploading files to S3 as part of a build pipeline
- Added --organization-file to perform-tasks and validate-tasks command, can be used to specify the organization to be used when evaluating bindings (without having an update-organization task)
- Added TaskRoleName to update-stacks, update-serverless.com & copy-to-s3 tasks to support custom role for cross account access
- Added CloudFormationRoleName to update-stacks to pass specific role to CloudFormation
version 0.9.3
- Added flag --perform-cleanup to perform-tasks to automatically delete stacks removed from tasks file
- Added support for moving master account to OU
- Added support for multiple accounts that have the same account name
version 0.9.2
- Fixed issue with init-pipeline failing due to wrong option on codebuild script
version 0.9.1
- Added Support for expanding EnumTargetAccounts and EnumTargetRegions inside array
- Added Support for modeling nested Organizational Units
- OU bindings will include nested OU's
- Fixed issue with failed stacks tolerance on update-stacks
- Added option (--no-color) to disable colorization of log messages.
- Clear error message when generating organization.yaml for org with master account inside OU
version 0.0.76
- Fixed issue with validation of commandline input pararameters
version 0.0.75
- Added additional input validation
version 0.0.74
- Added support for further extending the account creation using CloudWatch / EventBridge events. See example: https://github.com/OlafConijn/AwsOrganizationFormation/tree/master/examples/automation/create-account
version 0.0.73
- Changed the default for max concurrent stacks (within a task, update or delete-stacks) to 1
- Added
--max-concurrent-stacksand--failed-stacks-toleranceoptions - Added attributes to update-stacks task to modify values for max-concurrancy and failure tolerance.
- When a tasks depends on a failed task it will be skipped automatically
- Added red to errors and yellow warnings to make 'm stand out more
version 0.0.72
- Fixed inconsistency in function naming scheme: using Fn:TargetCount will log a warning. Fn::TargetCount (2 colons) will not.
version 0.0.71
- Added SupportLevel attribute to accounts, which can be used to set the support subscription level (enterprise, business or developer) for the account.
version 0.0.70
- Modified init-pipeline command so it will include the template for codecommit/build/pipeline in the initial commit.
- Added descriptive error when !Ref on parameter.ExportAccountId cannot be resolved.
- Fixed bug where changing the logical name of MasterAccount resulted in invalid state.
- Changed the logical name of generated Foreach resources. Also added a very specific error with help how to resolve adverse effects of this on guardduty templates.
version 0.0.69
- Added --stack-trace flag to print stack traces for errors. stacktraces are now hidden by default.
version 0.0.68
- Added support for passing !Ref account in update-stacks parameters (tasks file).
- Added validation on the tasks in tasks file: top level file must have exactly 1 update-organization task
- Added validation on the tasks in tasks file: no 2 update-stacks tasks can have the same stackName
version 0.0.67
- Added support for empty/null bindings.
- Added Fn:TargetCount function which returns the amount of target for a binding. Can be used in Conditions, e.g: CreateResoruce: !Not [ !Equals [ Fn:TargetCount MyBinding, 0 ] ]
version 0.0.65
- Fixed issue where account creation had to be retried after timing issue accessing the account for the first time.
- When calling org-formation without args it will display help.
version 0.0.64
- Improved logic to select resource in cross target !Ref. If target resource exists in same account but different region AWSAccount.Resources.LogicalResourceId can now be used to refer to resource in different region.
version 0.0.63
- Fixed issue when deleting stacks state wasnt updated properly.
version 0.0.62
- Fixed issue with execute change set CLI command
version 0.0.61
- Added quite a bit of validation logic (notably to OrganizationalBindings and tasks)
version 0.0.60
- Ranamed Foreach to ForeachElement for resource foreach (old attribute logs warning)
version 0.0.59
- Ranamed OrganizationBinding to DefaultOrganizationBinding in template (old attribute logs warning)
- Ranamed OrganizationBindingRegion to DefaultOrganizationBindingRegion in template (old attribute logs warning)
- Ranamed OrganizationBinding to DefaultOrganizationBinding in update-stack tasks (old attribute logs warning)
- Ranamed OrganizationBindingRegion to DefaultOrganizationBindingRegion in update-stack tasks (old attribute logs warning)
version 0.0.58
- Support for cross account dependencies with conditions (condition gets copied to export)
version 0.0.56
- Support for qouted expressions in EnumTargetRegions and EnumTargetAccounts, e.g. Fn::EnumTargetAccounts RoleAccountBinding 'arn:aws:iam::${account}:role/DeveloperRole'
- Support for adding OrganizationBindings in update-stack tasks.
version 0.0.55
- Support for toplevel OrganizationBindings section to list organization bindings
- Changed EnumTargetAccounts and EnumTargetRegions to only work with organization bindings from OrganizationBindings section
version 0.0.54
- Fixed issue with explicit cross account !Ref and !GetAtt to local account (e.g. !GetAtt AWSAccount.Resources.Topic.arn)
version 0.0.53
- Made --stack-name option optional on validate-stack and print-stack.
- Added --parameters option to print-stacks command. Doesnt really do anything but allows you to use the same options on validate-stack and print-stack.
version 0.0.52
- Added --parameters option to validate-stacks command.
version 0.0.51
- When running perform-tasks, having an update-organization task is now required. The organization file will be re-used and must be consistent with other tasks.
version 0.0.50
- Fixed a bug where cross account export values that were resolved where re-used on multiple target parameters
version 0.0.49
- Added validate tasks command (org-formation validate-tasks )
version 0.0.48
- Added validate stacks command (org-formation validate-stacks )
- Init-pipeline now reuses state bucket if already present.
version 0.0.47
- Fixed an issue where stacks wouldnt be able to get deleted after the account was closed. Stacks will now be forgotten if deletion fails.