Skip to content

Commit 47c7dda

Browse files
authored
Merge pull request #607 from aws-solutions/feature/v7.0.7
release v7.0.7
2 parents 79db5a1 + e649add commit 47c7dda

27 files changed

+5959
-6426
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,24 @@ 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+
## [7.0.7] - 2025-09-22
9+
10+
### Security
11+
12+
- Bumped `axios` to 1.12.2 to mitigate [CVE-2025-58754](https://avd.aquasec.com/nvd/cve-2025-58754)
13+
14+
### Changed
15+
16+
- Modified sourcebucketpattern to allow valid s3 bucket names
17+
18+
### Removed
19+
20+
- AppRegistry application at resource level
21+
822
## [7.0.6] - 2025-07-28
923

1024
### Security
25+
1126
- Bump `form-data` to mitigate [CVE-2025-7783](https://github.com/advisories/GHSA-fjxv-7rqg-78g4)
1227

1328
## [7.0.5] - 2025-07-07

NOTICE

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,7 @@ detect-libc under the Apache-2.0 license.
703703
@aws-sdk/middleware-sdk-ec2 under the Apache-2.0 license.
704704
@aws-sdk/util-format-url under the Apache-2.0 license.
705705
@aws-sdk/client-s3 under the Apache-2.0 license.
706+
@aws-sdk/client-rekognition under the Apache-2.0 license.
706707
@aws-crypto/sha1-browser under the Apache-2.0 license.
707708
@aws-sdk/middleware-bucket-endpoint under the Apache-2.0 license.
708709
@aws-sdk/util-arn-parser under the Apache-2.0 license.
@@ -718,11 +719,8 @@ detect-libc under the Apache-2.0 license.
718719
@smithy/chunked-blob-reader-native under the Apache-2.0 license.
719720
@smithy/hash-stream-node under the Apache-2.0 license.
720721
@aws-sdk/client-secrets-manager under the Apache-2.0 license.
721-
@aws-sdk/client-service-catalog-appregistry under the Apache-2.0 license.
722-
@aws-sdk/client-rekognition under the Apache-2.0 license.
723722
moment under the MIT license.
724723
metrics-utils under the Apache-2.0 license.
725-
@aws-cdk/aws-servicecatalogappregistry-alpha under the Apache-2.0 license.
726724
@aws-solutions-constructs/aws-apigateway-lambda under the Apache-2.0 license.
727725
code-point-at under the MIT license.
728726
core-util-is under the MIT license.

VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7.0.6
1+
7.0.7

source/constructs/lib/common-resources/common-resources-construct.ts

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { Construct } from "constructs";
88
import { addCfnCondition } from "../../utils/utils";
99
import { SolutionConstructProps } from "../types";
1010
import { CustomResourcesConstruct } from "./custom-resources/custom-resource-construct";
11-
import * as appreg from "@aws-cdk/aws-servicecatalogappregistry-alpha";
1211

1312
export interface CommonResourcesProps extends SolutionConstructProps {
1413
readonly solutionId: string;
@@ -29,14 +28,6 @@ export interface Conditions {
2928
readonly useExistingCloudFrontDistributionCondition: CfnCondition;
3029
}
3130

32-
export interface AppRegistryApplicationProps {
33-
readonly description: string;
34-
readonly solutionId: string;
35-
readonly applicationName: string;
36-
readonly solutionName: string;
37-
readonly solutionVersion: string;
38-
}
39-
4031
/**
4132
* Construct that creates Common Resources for the solution.
4233
*/
@@ -110,32 +101,4 @@ export class CommonResources extends Construct {
110101

111102
this.logsBucket = this.customResources.createLogBucket();
112103
}
113-
114-
public appRegistryApplication(props: AppRegistryApplicationProps) {
115-
const stack = Stack.of(this);
116-
const applicationType = "AWS-Solutions";
117-
118-
const application = new appreg.Application(stack, "AppRegistry", {
119-
applicationName: props.applicationName,
120-
description: `Service Catalog application to track and manage all your resources for the solution ${props.solutionName}`,
121-
});
122-
application.associateApplicationWithStack(stack);
123-
124-
Tags.of(application).add("Solutions:SolutionID", props.solutionId);
125-
Tags.of(application).add("Solutions:SolutionName", props.solutionName);
126-
Tags.of(application).add("Solutions:SolutionVersion", props.solutionVersion);
127-
Tags.of(application).add("Solutions:ApplicationType", applicationType);
128-
129-
const attributeGroup = new appreg.AttributeGroup(stack, "DefaultApplicationAttributeGroup", {
130-
attributeGroupName: `A30-AppRegistry-${Aws.STACK_NAME}`,
131-
description: "Attribute group for solution information",
132-
attributes: {
133-
applicationType,
134-
version: props.solutionVersion,
135-
solutionID: props.solutionId,
136-
solutionName: props.solutionName,
137-
},
138-
});
139-
attributeGroup.associateWith(application);
140-
}
141-
}
104+
}

source/constructs/lib/common-resources/custom-resources/custom-resource-construct.ts

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ export class CustomResourcesConstruct extends Construct {
6868
public readonly uuid: string;
6969
public regionedBucketName: string;
7070
public regionedBucketHash: string;
71-
public appRegApplicationName: string;
7271
public existingDistributionDomainName: string;
7372

7473
constructor(scope: Construct, id: string, props: CustomResourcesConstructProps) {
@@ -142,40 +141,6 @@ export class CustomResourcesConstruct extends Construct {
142141
}),
143142
],
144143
}),
145-
AppRegistryPolicy: new PolicyDocument({
146-
statements: [
147-
new PolicyStatement({
148-
effect: Effect.ALLOW,
149-
actions: ["cloudformation:DescribeStackResources"],
150-
resources: [
151-
Stack.of(this).formatArn({
152-
partition: Aws.PARTITION,
153-
service: "cloudformation",
154-
region: Aws.REGION,
155-
account: Aws.ACCOUNT_ID,
156-
resource: "stack",
157-
resourceName: `${Aws.STACK_NAME}/*`,
158-
arnFormat: ArnFormat.SLASH_RESOURCE_NAME,
159-
}),
160-
],
161-
}),
162-
new PolicyStatement({
163-
effect: Effect.ALLOW,
164-
actions: ["servicecatalog:GetApplication"],
165-
resources: [
166-
Stack.of(this).formatArn({
167-
partition: Aws.PARTITION,
168-
service: "servicecatalog",
169-
region: Aws.REGION,
170-
account: Aws.ACCOUNT_ID,
171-
resource: "applications",
172-
resourceName: `*`,
173-
arnFormat: ArnFormat.SLASH_RESOURCE_SLASH_RESOURCE_NAME,
174-
}),
175-
],
176-
}),
177-
],
178-
}),
179144
ExistingDistributionPolicy: new PolicyDocument({
180145
statements: [
181146
new PolicyStatement({
@@ -291,16 +256,6 @@ export class CustomResourcesConstruct extends Construct {
291256
produce: () => regionedBucketValidationResults.getAttString("BucketHash"),
292257
});
293258

294-
const getAppRegApplicationNameResults = this.createCustomResource(
295-
"CustomResourceGetAppRegApplicationName",
296-
this.customResourceLambda,
297-
{
298-
CustomAction: "getAppRegApplicationName",
299-
Region: Aws.REGION,
300-
DefaultName: Fn.join("-", ["AppRegistry", Aws.STACK_NAME, Aws.REGION, Aws.ACCOUNT_ID]),
301-
}
302-
);
303-
this.appRegApplicationName = getAppRegApplicationNameResults.getAttString("ApplicationName");
304259

305260
this.createCustomResource(
306261
"CustomResourceCheckFallbackImage",

source/constructs/lib/serverless-image-stack.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ export class ServerlessImageHandlerStack extends Stack {
4747
const sourceBucketsParameter = new CfnParameter(this, "SourceBucketsParameter", {
4848
type: "String",
4949
description:
50-
"(Required) List the buckets (comma-separated) within your account that contain original image files. If you plan to use Thumbor or Custom image requests with this solution, the source bucket for those requests will default to the first bucket listed in this field.",
51-
allowedPattern: ".+",
52-
default: "defaultBucket, bucketNo2, bucketNo3, ...",
50+
"(Required) List the buckets (comma-separated) within your account that contain original image files. If you plan to use Thumbor or Custom image requests with this solution, the source bucket for those requests will default to the first bucket listed in this field. e.g. (defaultBucket,bucketNo2,bucketNo3,...)",
51+
allowedPattern: "^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9](?:\\s*,\\s*[a-z0-9][a-z0-9.-]{1,61}[a-z0-9])*$",
52+
constraintDescription: "Source bucket is required. Please provide at least one valid S3 bucket name that is present in your account.",
5353
});
5454

5555
const deployDemoUIParameter = new CfnParameter(this, "DeployDemoUIParameter", {
@@ -316,14 +316,6 @@ export class ServerlessImageHandlerStack extends Stack {
316316
apiEndpoint: apiEndpointConditionString,
317317
});
318318

319-
commonResources.appRegistryApplication({
320-
description: `${props.solutionId} - ${props.solutionName}. Version ${props.solutionVersion}`,
321-
solutionVersion: props.solutionVersion,
322-
solutionId: props.solutionId,
323-
solutionName: props.solutionName,
324-
applicationName: commonResources.customResources.appRegApplicationName,
325-
});
326-
327319
this.templateOptions.metadata = {
328320
"AWS::CloudFormation::Interface": {
329321
ParameterGroups: [

0 commit comments

Comments
 (0)