Skip to content

Commit e88faa9

Browse files
authored
Merge pull request #251 from aws-solutions/release/v3.0.2
RELEASE 3.0.2
2 parents 49b096b + c94ead8 commit e88faa9

File tree

74 files changed

+6403
-3078
lines changed

Some content is hidden

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

74 files changed

+6403
-3078
lines changed

CHANGELOG.md

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

8+
## [3.0.2] - 2025-12-09
9+
10+
### Changed
11+
12+
- Enable lambda code updates with stack update
13+
- Python updated packages urllib3 (2.5.0 to 2.6.0), boto3 (1.40.39→1.40.76), botocore (1.40.39→1.40.76), AWS type stubs, cryptography (45.0.6→46.0.3), pydantic (2.11.7→2.12.5), werkzeug (3.1.3→3.1.4)
14+
- Npm updated packages in deployment
15+
16+
### Added
17+
18+
- Batch invite users
19+
- [SSM adaptive concurrency](https://docs.aws.amazon.com/systems-manager/latest/userguide/adaptive-concurrency.html) enabled for new accounts. Existing accounts are unaffected. Use CDK parameter `ENABLE_ADAPTIVE_CONCURRENCY` to toggle this feature
20+
- New runbook for SSM.7
21+
- Export CSV action to findings table
22+
23+
### Fixed
24+
25+
- New remediations are not updated in RemediationConfigurationDynamoDBTable
26+
827
## [3.0.1] - 2025-11-20
928

1029
### Changed

NOTICE.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ This software includes third party software subject to the following copyrights:
7474
@aws-sdk/credential-provider-env under the Apache-2.0 license.
7575
@aws-sdk/credential-provider-http under the Apache-2.0 license.
7676
@aws-sdk/credential-provider-ini under the Apache-2.0 license.
77+
@aws-sdk/credential-provider-login under the Apache-2.0 license.
7778
@aws-sdk/credential-provider-node under the Apache-2.0 license.
7879
@aws-sdk/credential-provider-process under the Apache-2.0 license.
7980
@aws-sdk/credential-provider-sso under the Apache-2.0 license.
@@ -1008,6 +1009,7 @@ mypy under the MIT license.
10081009
mypy-boto3-cloudformation under the MIT license.
10091010
mypy-boto3-cloudfront under the MIT license.
10101011
mypy-boto3-cloudwatch under the MIT license.
1012+
mypy-boto3-dynamodb under the MIT license.
10111013
mypy-boto3-ec2 under the MIT license.
10121014
mypy-boto3-iam under the MIT license.
10131015
mypy-boto3-s3 under the MIT license.

deployment/build-s3-dist.sh

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ main() {
9999
if [[ "${BUILD_ENV:-}" != "development" ]]; then
100100
echo -e "\033[1;33m===============================================================================\033[0m"
101101
echo -e "\033[1;33m⚠️ WARNING: BUILD_ENV is not set to 'development'. Localhost URLs will not be included in Cognito UserPoolClient configuration.\033[0m"
102-
echo -e "\033[1;33mTo include localhost URLs for development, run: BUILD_ENV=development $0 $*\033[0m"
102+
echo -e "\033[1;33mTo include localhost URLs for development, run: export BUILD_ENV=development\033[0m"
103+
echo -e "\033[1;33mThen run: $0 $*\033[0m"
103104
echo -e "\033[1;33m===============================================================================\033[0m"
104105
echo ""
105106
sleep 2
@@ -162,18 +163,24 @@ main() {
162163
zip -q ${build_dist_dir}/lambda/remediation_config_provider.zip remediation_config_provider.py cfnresponse.py
163164
popd
164165

166+
header "[Pack] Enable Adaptive Concurrency Custom Action Lambda"
167+
168+
pushd "$source_dir"/solution_deploy/source
169+
zip -q ${build_dist_dir}/lambda/enable_adaptive_concurrency.zip enable_adaptive_concurrency.py cfnresponse.py
170+
popd
165171

166172
header "[Pack] Wait Provider Lambda"
167173

168174
pushd "$source_dir"/solution_deploy/source
169175
zip -q ${build_dist_dir}/lambda/wait_provider.zip wait_provider.py cfnresponse.py
176+
popd
170177

171178
header "[Pack] Orchestrator Lambdas"
172179

173180
pushd "$source_dir"/Orchestrator
174181
ls | while read file; do
175182
if [ ! -d $file ]; then
176-
zip -q "$build_dist_dir"/lambda/"$file".zip "$file"
183+
zip -q "$build_dist_dir"/lambda/"${file%.*}".zip "$file"
177184
fi
178185
done
179186
popd
@@ -201,7 +208,7 @@ main() {
201208
pushd $dir/ticket_generator
202209
ls | while read file; do
203210
if [ ! -d $file ]; then
204-
zip -q "$build_dist_dir"/lambda/blueprints/"$file".zip "$file"
211+
zip -q "$build_dist_dir"/lambda/blueprints/"${file%.*}".zip "$file"
205212
fi
206213
done
207214
popd
@@ -253,6 +260,49 @@ main() {
253260
node app.js --target "$build_dist_dir/webui" --output webui-manifest.json
254261
mv webui-manifest.json $build_dist_dir/webui/webui-manifest.json
255262

263+
# IMPORTANT: Pack all lambda assets before this line
264+
265+
header "[Generate] Lambda Content Hashes"
266+
267+
# Generate content hashes for all Lambda zip files recursively
268+
temp_mappings="$temp_work_dir/lambda_mappings.txt"
269+
> "$temp_mappings"
270+
271+
find "$build_dist_dir"/lambda -type f -name "*.zip" | while read -r zip_file; do
272+
relative_path="${zip_file#$build_dist_dir/lambda/}"
273+
dir_path=$(dirname "$relative_path")
274+
filename=$(basename "$zip_file")
275+
hash=$(sha256sum "$zip_file" | cut -d' ' -f1 | cut -c1-8)
276+
hashed_filename="${filename%.zip}-${hash}.zip"
277+
278+
if [ "$dir_path" = "." ]; then
279+
mv "$zip_file" "$build_dist_dir"/lambda/"$hashed_filename"
280+
echo "$filename|$hashed_filename" >> "$temp_mappings"
281+
echo "Generated hash for $filename: $hash"
282+
else
283+
mv "$zip_file" "$build_dist_dir"/lambda/"$dir_path"/"$hashed_filename"
284+
echo "$dir_path/$filename|$dir_path/$hashed_filename" >> "$temp_mappings"
285+
echo "Generated hash for $dir_path/$filename: $hash"
286+
fi
287+
done
288+
289+
# Create hash manifest file for CDK to read
290+
echo "{" > "$build_dist_dir"/lambda/lambda-hashes.json
291+
292+
# Add each hash mapping to the JSON file
293+
first=true
294+
while IFS='|' read -r original hashed; do
295+
if [ "$first" = true ]; then
296+
first=false
297+
else
298+
echo "," >> "$build_dist_dir"/lambda/lambda-hashes.json
299+
fi
300+
echo -n " \"$original\": \"$hashed\"" >> "$build_dist_dir"/lambda/lambda-hashes.json
301+
done < "$temp_mappings"
302+
303+
echo "" >> "$build_dist_dir"/lambda/lambda-hashes.json
304+
echo "}" >> "$build_dist_dir"/lambda/lambda-hashes.json
305+
256306
header "[Create] Playbooks"
257307

258308
for playbook in $(ls "$source_dir"/playbooks); do

0 commit comments

Comments
 (0)