Skip to content

Commit f1db886

Browse files
authored
add resourceGroupName prop to function (#2233)
* add resourceGroupName prop to function and storage * PR feedback * update changeset
1 parent f83d6d5 commit f1db886

File tree

29 files changed

+389
-7
lines changed

29 files changed

+389
-7
lines changed

.changeset/bright-guests-marry.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
'@aws-amplify/backend-function': minor
3+
'@aws-amplify/backend-storage': patch
4+
'@aws-amplify/plugin-types': minor
5+
'@aws-amplify/backend': minor
6+
'@aws-amplify/backend-auth': patch
7+
'@aws-amplify/backend-data': patch
8+
'@aws-amplify/backend-ai': patch
9+
---
10+
11+
add resourceGroupName prop to function

packages/backend-ai/src/conversation/factory.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { AIConversationOutput } from '@aws-amplify/backend-output-schemas';
22
import {
3+
AmplifyResourceGroupName,
34
BackendOutputStorageStrategy,
45
ConstructContainerEntryGenerator,
56
ConstructFactory,
@@ -20,7 +21,8 @@ import { AiModel } from '@aws-amplify/data-schema-types';
2021
class ConversationHandlerFunctionGenerator
2122
implements ConstructContainerEntryGenerator
2223
{
23-
readonly resourceGroupName = 'conversationHandlerFunction';
24+
readonly resourceGroupName: AmplifyResourceGroupName =
25+
'conversationHandlerFunction';
2426

2527
constructor(
2628
private readonly props: DefineConversationHandlerFunctionProps,

packages/backend-auth/src/factory.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
TriggerEvent,
1313
} from '@aws-amplify/auth-construct';
1414
import {
15+
AmplifyResourceGroupName,
1516
AuthResources,
1617
AuthRoleName,
1718
ConstructContainerEntryGenerator,
@@ -134,7 +135,7 @@ export class AmplifyAuthFactory implements ConstructFactory<BackendAuth> {
134135
}
135136

136137
class AmplifyAuthGenerator implements ConstructContainerEntryGenerator {
137-
readonly resourceGroupName = 'auth';
138+
readonly resourceGroupName: AmplifyResourceGroupName = 'auth';
138139
private readonly name: string;
139140

140141
constructor(

packages/backend-auth/src/reference_factory.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
AmplifyResourceGroupName,
23
AuthRoleName,
34
BackendOutputStorageStrategy,
45
ConstructContainerEntryGenerator,
@@ -129,7 +130,7 @@ export class AmplifyReferenceAuthFactory
129130
class AmplifyReferenceAuthGenerator
130131
implements ConstructContainerEntryGenerator
131132
{
132-
readonly resourceGroupName = 'auth';
133+
readonly resourceGroupName: AmplifyResourceGroupName = 'auth';
133134
private readonly name: string;
134135

135136
constructor(

packages/backend-data/src/factory.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { IConstruct } from 'constructs';
22
import {
33
AmplifyFunction,
4+
AmplifyResourceGroupName,
45
AuthResources,
56
BackendOutputStorageStrategy,
67
ConstructContainerEntryGenerator,
@@ -112,7 +113,7 @@ export class DataFactory implements ConstructFactory<AmplifyData> {
112113
}
113114

114115
class DataGenerator implements ConstructContainerEntryGenerator {
115-
readonly resourceGroupName = 'data';
116+
readonly resourceGroupName: AmplifyResourceGroupName = 'data';
116117
private readonly name: string;
117118

118119
constructor(

packages/backend-function/API.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
55
```ts
66

7+
import { AmplifyResourceGroupName } from '@aws-amplify/plugin-types';
78
import { BackendSecret } from '@aws-amplify/plugin-types';
89
import { ConstructFactory } from '@aws-amplify/plugin-types';
910
import { FunctionResources } from '@aws-amplify/plugin-types';
@@ -38,6 +39,7 @@ export type FunctionProps = {
3839
schedule?: FunctionSchedule | FunctionSchedule[];
3940
layers?: Record<string, string>;
4041
bundling?: FunctionBundlingOptions;
42+
resourceGroupName?: AmplifyResourceGroupName;
4143
};
4244

4345
// @public (undocumented)

packages/backend-function/src/factory.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
TagName,
1010
} from '@aws-amplify/platform-core';
1111
import {
12+
AmplifyResourceGroupName,
1213
BackendOutputStorageStrategy,
1314
BackendSecret,
1415
BackendSecretResolver,
@@ -150,6 +151,14 @@ export type FunctionProps = {
150151
* Options for bundling the function code.
151152
*/
152153
bundling?: FunctionBundlingOptions;
154+
155+
/**
156+
* Group the function with existing Amplify resources or separate the function into its own group.
157+
* @default 'function' // grouping with other Amplify functions
158+
* @example
159+
* resourceGroupName: 'auth' // to group an auth trigger with an auth resource
160+
*/
161+
resourceGroupName?: AmplifyResourceGroupName;
153162
};
154163

155164
export type FunctionBundlingOptions = {
@@ -208,6 +217,7 @@ class FunctionFactory implements ConstructFactory<AmplifyFunction> {
208217
schedule: this.resolveSchedule(),
209218
bundling: this.resolveBundling(),
210219
layers,
220+
resourceGroupName: this.props.resourceGroupName ?? 'function',
211221
};
212222
};
213223

@@ -339,12 +349,14 @@ class FunctionFactory implements ConstructFactory<AmplifyFunction> {
339349
type HydratedFunctionProps = Required<FunctionProps>;
340350

341351
class FunctionGenerator implements ConstructContainerEntryGenerator {
342-
readonly resourceGroupName = 'function';
352+
readonly resourceGroupName: AmplifyResourceGroupName;
343353

344354
constructor(
345355
private readonly props: HydratedFunctionProps,
346356
private readonly outputStorageStrategy: BackendOutputStorageStrategy<FunctionOutput>
347-
) {}
357+
) {
358+
this.resourceGroupName = props.resourceGroupName;
359+
}
348360

349361
generateContainerEntry = ({
350362
scope,

packages/backend-storage/src/storage_container_entry_generator.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
AmplifyResourceGroupName,
23
ConstructContainerEntryGenerator,
34
ConstructFactoryGetInstanceProps,
45
GenerateContainerEntryProps,
@@ -17,7 +18,7 @@ import { TagName } from '@aws-amplify/platform-core';
1718
export class StorageContainerEntryGenerator
1819
implements ConstructContainerEntryGenerator
1920
{
20-
readonly resourceGroupName = 'storage';
21+
readonly resourceGroupName: AmplifyResourceGroupName = 'storage';
2122

2223
/**
2324
* Initialize with context from storage factory
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { CircularDepAuthDataFuncTestProjectCreator } from '../../test-project-setup/circular_dep_auth_data_func.js';
2+
import { defineDeploymentTest } from './deployment.test.template.js';
3+
4+
defineDeploymentTest(new CircularDepAuthDataFuncTestProjectCreator());
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { CircularDepDataFuncTestProjectCreator } from '../../test-project-setup/circular_dep_data_func.js';
2+
import { defineDeploymentTest } from './deployment.test.template.js';
3+
4+
defineDeploymentTest(new CircularDepDataFuncTestProjectCreator());

0 commit comments

Comments
 (0)