Skip to content

Commit 08f76ab

Browse files
author
AWS
committed
Release: 2.3.0
1 parent 9199aed commit 08f76ab

File tree

87 files changed

+3534
-531
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+3534
-531
lines changed

.github/ISSUE_TEMPLATE/documentation-improvements.md

Lines changed: 0 additions & 17 deletions
This file was deleted.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
*Issue #, if available:*
1+
# Contributing to Customizations for AWS Control Tower (CfCT).
22

3-
*Description of changes:*
3+
Thank you for your interest in contributing to Customizations for AWS Control Tower (CfCT).
4+
5+
At this time, we are not accepting contributions. If contributions are accepted in the future, Customizations for AWS Control Tower (CfCT) is released under the [Apache license](http://aws.amazon.com/apache2.0/) and any code submitted will be released under that license.
46

57
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

.gitignore

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,26 @@
1+
# Development
12
.DS_Store
23
.idea/
34
*.pyc
5+
*.so
46
.eggs
57
*.egg-info
68
.cache
79
*.sonarlint
8-
source/tests/__pycache__/
9-
source/lib/__pycache__/
10+
.python-version
11+
__pycache__
12+
.pytest_cache
13+
14+
# Ignore virtual environments
15+
venv
16+
.venv
17+
testing-venv
18+
19+
# Ignore installed dependencies
20+
dist
21+
source/src/build
22+
23+
/deployment/open-source
1024
/deployment/state_machines/sample_events/
11-
/source/scratch/
12-
/source/bin/build_scripts/CHANGELOG.json
1325
/deployment/global-s3-assets/
14-
/deployment/regional-s3-assets/
15-
/source/parse*
16-
/source/dateutil/
17-
/source/python_dateutil*
18-
/source/docutils*
19-
/source/futures-*
20-
/source/jmespath*
21-
/source/concurrent/
22-
/source/s3transfer*
23-
/source/six-*
24-
/source/urllib3*
25-
/source/six.py
26-
/source/chardet*
27-
/source/certifi*
28-
/source/idna*
29-
/source/requests*
30-
/source/yorm*
31-
/source/yaml*
32-
/source/jinja2*
33-
/source/markupsafe*
34-
/source/simplejson*
35-
/source/PyYAML*
36-
/source/_yaml/
37-
/source/pathlib2-2.3.6.dist-info/
38-
/source/pathlib2/
26+
/deployment/regional-s3-assets/

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [2.3.0] - 2022-04-20
8+
- Pinned version for MarkupSafe dependency to 2.0.1 due to https://github.com/pallets/jinja/issues/1585
9+
- Pinned version of Amazon Corretto to java-1.8.0-amazon-corretto-jdk due to https://github.com/aws-solutions/aws-control-tower-customizations/issues/102
10+
- Moved python code into its own package
11+
- Building the solution from source now requires Python 3.6 or higher
12+
- Customers should now download the [Customizations for AWS Control Tower CloudFormation Template](https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/customizations-for-aws-control-tower.template) from GitHub instead of S3
13+
714
## [2.2.0] - 2021-12-09
815
### Added
916
- Added support for organization Root as an OU for manifest schema version "2021-03-15". [#8](https://github.com/aws-solutions/aws-control-tower-customizations/pull/8)

CONTRIBUTING.md

Lines changed: 5 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,5 @@
1-
# Contributing Guidelines
2-
3-
Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional
4-
documentation, we greatly value feedback and contributions from our community.
5-
6-
Please read through this document before submitting any issues or pull requests to ensure we have all the necessary
7-
information to effectively respond to your bug report or contribution.
8-
9-
10-
## Reporting Bugs/Feature Requests
11-
12-
We welcome you to use the GitHub issue tracker to report bugs or suggest features.
13-
14-
When filing an issue, please check [existing open](https://github.com/aws-solutions/aws-control-tower-customizations/issues), or [recently closed](https://github.com/aws-solutions/aws-control-tower-customizations/issues?q=is%3Aissue+is%3Aclosed), issues to make sure somebody else hasn't already
15-
reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
16-
17-
* A reproducible test case or series of steps
18-
* The version of our code being used
19-
* Any modifications you've made relevant to the bug
20-
* Anything unusual about your environment or deployment
21-
22-
23-
## Contributing via Pull Requests
24-
Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
25-
26-
1. You are working against the latest source on the *main* branch.
27-
2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
28-
3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
29-
30-
To send us a pull request, please:
31-
32-
1. Fork the repository.
33-
2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
34-
3. Ensure local tests pass.
35-
4. Commit to your fork using clear commit messages.
36-
5. Send us a pull request, answering any default questions in the pull request interface.
37-
6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
38-
39-
GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
40-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
41-
42-
43-
## Finding contributions to work on
44-
Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels ((enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any ['help wanted'](https://github.com/aws-solutions/aws-control-tower-customizations/labels/help%20wanted) issues is a great place to start.
45-
46-
47-
## Code of Conduct
48-
This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
49-
For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
50-
opensource-codeofconduct@amazon.com with any additional questions or comments.
51-
52-
53-
## Security issue notifications
54-
If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue.
55-
56-
57-
## Licensing
58-
See the [LICENSE](https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/LICENSE.txt) file for our project's licensing. We will ask you to confirm the licensing of your contribution.
59-
60-
61-
We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes.
1+
# Contributing to Customizations for AWS Control Tower (CfCT).
2+
3+
Thank you for your interest in contributing to Customizations for AWS Control Tower (CfCT).
4+
5+
At this time, we are not accepting contributions. If contributions are accepted in the future, Customizations for AWS Control Tower (CfCT) is released under the [Apache license](http://aws.amazon.com/apache2.0/) and any code submitted will be released under that license.

README.md

Lines changed: 16 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
The Customizations for AWS Control Tower solution combines AWS Control Tower and other highly-available, trusted AWS services to help customers more quickly set up a secure, multi-account AWS environment based on AWS best practices. Customers can easily add customizations to their AWS Control Tower landing zone using an AWS CloudFormation template and service control policies (SCPs). Customers can deploy their custom template and policies to both individual accounts and organizational units (OUs) within their organization. Customizations for AWS Control Tower integrates with AWS Control Tower lifecycle events to ensure that resource deployments stay in sync with the customer's landing zone. For example, when a new account is created using the AWS Control Tower account factory, the solution ensures that all resources attached to the account's OUs will be automatically deployed. Before deploying this solution, customers need to have an AWS Control Tower landing zone deployed in their account.
33

44
## Getting Started
5-
To get started with the Customizations for AWS Control Tower solution, please review the [solution documentation](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/)
5+
To get started with Customizations for AWS Control Tower, please review the [documentation](https://docs.aws.amazon.com/controltower/latest/userguide/customize-landing-zone.html)
66

77
## Running unit tests for customization
88
* Clone the repository, then make the desired code changes
@@ -14,20 +14,26 @@ chmod +x ./deployment/run-unit-tests.sh
1414
```
1515

1616
## Building the customized solution
17+
* Building the solution from source requires Python 3.6 or higher
1718
* Configure the solution name, version number and bucket name of your target Amazon S3 distribution bucket
19+
1820
```
1921
export DIST_OUTPUT_BUCKET_PREFIX=my-bucket-prefix # Prefix for the S3 bucket where customized code will be stored
2022
export TEMPLATE_OUTPUT_BUCKET=my-bucket-name # Name for the S3 bucket where the template will be stored
21-
export SOLUTION_NAME= my-solution-name # name of the solution (e.g. customizations-for-aws-control-tower)
23+
export SOLUTION_NAME=my-solution-name # name of the solution (e.g. customizations-for-aws-control-tower)
2224
export VERSION=my-version # version number for the customized code (e.g. 2.1.0)
23-
export REGION=aws-region-code # the AWS region to test the solution (e.g. us-east-1)
24-
```
25-
_Note:_ You would need to create one global bucket and one regional bucket. The global bucket TEMPLATE_OUTPUT_BUCKET, for example "my-bucket-name", is used to store the AWS CloudFormation template. The regional bucket $DIST_OUTPUT_BUCKET_PREFIX-$REGION, for example "my-bucket-name-us-east-1", is used to store your customized source code zip packages (lambda code). The solution's CloudFormation template will expect the source code to be located in a bucket matching that name. Also, the assets in bucket should be publicly accessible.
26-
25+
```
26+
27+
* Update pip version to latest
28+
```
29+
python3 -m pip install -U pip
30+
```
31+
32+
2733
* Now build the distributable
2834
```
29-
chmod +x ./build-s3-dist.sh
30-
./build-s3-dist.sh $DIST_OUTPUT_BUCKET_PREFIX $TEMPLATE_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
35+
chmod +x ./deployment/build-s3-dist.sh
36+
./deployment/build-s3-dist.sh $DIST_OUTPUT_BUCKET_PREFIX $TEMPLATE_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
3137
```
3238

3339
* Upload the distributable to an Amazon S3 bucket in your account.
@@ -46,54 +52,11 @@ chmod +x ./build-s3-dist.sh
4652
* Get the link of the custom-control-tower-initiation.template loaded to your Amazon S3 bucket.
4753
* Deploy the Customizations for AWS Control Tower solution to your account by launching a new AWS CloudFormation stack using the link of the custom-control-tower-initiation.template.
4854
49-
## File Structure
50-
The File structure of the Customizations for AWS Control Tower solution consists of a deployment directory that contains AWS CloudFormation template and build scripts, and a source directory that contains python source code.
51-
52-
```
53-
customizations-for-aws-control-tower
54-
├── deployment
55-
│ ├── build-s3-dist.sh [ shell script for packaging distribution assets ]
56-
│ ├── run-unit-tests.sh [ shell script for executing unit tests ]
57-
│ ├── custom-control-tower-initiation.template [ solution CloudFormation deployment template ]
58-
│ └── custom_control_tower_configuration [ custom configuration examples ]
59-
│ └── example-configuration
60-
└── source
61-
├── aws [ AWS services APIs and other utils used in the solution]
62-
├── bin
63-
│ ├── build_scripts [ python scripts for packaging the source code ]
64-
│ └── codebuild_scripts [ shell and python scripts for codebuild project ]
65-
├── manifest [ python code for processing manifest file]
66-
├── metrics [ python code for sending anonymous solution operatioal metrics]
67-
├── tests [ unit tests ]
68-
├── utils [ dependencies used in the solution ]
69-
├── validation [ shell and python scripts for validating manifest schema and cfn template]
70-
├── config_deployer.py [ Python code used by lambda to deploy configurations at solution deployment]
71-
├── lifecycle_event_handler.py [ Python code used by lambda to process AWS Control Tower lifecycle event]
72-
├── state_machine_handler.py [ Python code used by state machine to deploy SCPs and StackSets]
73-
├── state_machine_router.py [ Python code used by lambda to invoke state machine functions]
74-
└── state_machine_trigger.py [ Python code used by CodePipeline to trigger state machine]
75-
```
76-
77-
Below shows the file structure of a custom configuration package which can be found in the github source code. Note that this is an example, therefore file path, folder and file names can be modified by customers to match what is defined in the manifest file.
78-
79-
```
80-
custom_control_tower_configuration
81-
├── manifest.yaml [ custom configuration file. Required ]
82-
├── parameters
83-
│ ├── create-ssm-parameter-keys-1.json [ json file one containing input parameters used in the template file, if any. Optional ]
84-
│ └── create-ssm-parameter-keys-2.json [ json file two containing input parameters used in the template file, if any. Optional ]
85-
├── policies
86-
│ └── preventive-guardrails.json [ json file containing service control policies (preventive guardrails). required for SCPs ]
87-
└── templates
88-
├── create-ssm-parameter-keys-1.template [ CloudFormation template one for creating ssm parameter resources. required for StackSet ]
89-
└── create-ssm-parameter-keys-2.template [ CloudFormation template two for creating ssm parameter resources. required for StackSet ]
90-
```
91-
***
9255
9356
## Collection of operational metrics
9457
95-
This solution collects anonymous operational metrics to help AWS improve the quality and features of the solution. For more information, including how to disable this capability, please see the [implementation guide](https://docs.aws.amazon.com/solutions/latest/customizations-for-aws-control-tower/appendix-b.html).
58+
This solution collects anonymous operational metrics to help AWS improve the quality and features of the solution. For more information, including how to disable this capability, please see the [documentation here](https://docs.aws.amazon.com/controltower/latest/userguide/cfct-metrics.html).
9659
9760
## License
9861
99-
See license [here](https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/LICENSE.txt)
62+
See license [here](https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/LICENSE.txt)

0 commit comments

Comments
 (0)