-
Notifications
You must be signed in to change notification settings - Fork 103
Description
Environment information
System:
OS: Windows 10 10.0.19045
CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Memory: 1.63 GB / 7.92 GB
Binaries:
Node: 22.13.0 - C:\Program Files\nodejs\node.EXE
Yarn: undefined - undefined
npm: 11.4.2 - C:\Program Files\nodejs\npm.CMD
pnpm: 9.6.0 - C:\Program Files\nodejs\pnpm.CMD
NPM Packages:
@aws-amplify/auth-construct: 1.8.1
@aws-amplify/backend: 1.16.1
@aws-amplify/backend-ai: Not Found
@aws-amplify/backend-auth: 1.7.1
@aws-amplify/backend-cli: 1.8.0
@aws-amplify/backend-data: 1.6.1
@aws-amplify/backend-deployer: 2.1.3
@aws-amplify/backend-function: 1.14.1
@aws-amplify/backend-output-storage: 1.3.1
@aws-amplify/backend-secret: 1.4.0
@aws-amplify/backend-storage: 1.4.1
@aws-amplify/cli-core: 2.2.1
@aws-amplify/client-config: 1.8.0
@aws-amplify/data-construct: 1.16.3
@aws-amplify/data-schema: 1.21.1
@aws-amplify/deployed-backend-client: 1.8.0
@aws-amplify/form-generator: 1.2.4
@aws-amplify/model-generator: 1.2.0
@aws-amplify/platform-core: 1.10.0
@aws-amplify/plugin-types: 1.11.0
@aws-amplify/sandbox: 2.1.2
@aws-amplify/schema-generator: 1.4.0
@aws-cdk/toolkit-lib: 1.1.1
aws-amplify: 6.15.6
aws-cdk-lib: 2.215.0
typescript: 5.9.2
AWS environment variables:
AWS_PROFILE = -----
No CDK environment variables
Describe the bug
I added a function following exactly the steps in the tutorial and in the moment of adding the calls to cretate the variables to access the graphql api from the lamdba function or access the cognito user pools I get the same error when saving and rebuilding the sandbox:
21:41:29 ✔ Backend synthesized in 5.63 seconds
21:41:29 [ERROR] [BackendBuildError] Unable to deploy due to CDK Assembly Error
∟ Caused by: [AssemblyError] Assembly builder failed
∟ Caused by: [NodeJSFunctionConstructInitializationError] Failed to instantiate nodejs function construct
∟ Caused by: [ValidationError] Failed to bundle asset amplify-........-sandbox-ef95084b29/function/add-user-lambda/Code/Stage, bundle output is located at C:..........amplify\artifacts\cdk.out\bundling-temp-ffbd14bf139d5667b0541b93639a915e9e3a348bb61f09e5beb42326bd548911-building: Error: EPERM: operation not permitted, rename 'C:...........amplify\artifacts\cdk.out\bundling-temp-ffbd14bf139d5667b0541b93639a915e9e3a348bb61f09e5beb42326bd548911-building' -> 'C:.............amplify\artifacts\cdk.out\bundling-temp-ffbd14bf139d5667b0541b93639a915e9e3a348bb61f09e5beb42326bd548911'
Resolution: See the underlying error message for more details. Use --debug for additional debugging information.
Resolution: Check the Caused by error and fix any issues in your backend code
Reproduction steps
Define a function in amplify/auth/add-user/resource.ts:
import { defineFunction } from '@aws-amplify/backend';
export const addUser = defineFunction({
name: 'add-user'
});
Add the handler in amplify/auth/add-user/handler.ts:
import type { Schema } from "../../data/resource";
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';
import { Amplify } from 'aws-amplify';
import { env } from '$amplify/env/add-user';
import { generateClient } from "aws-amplify/data";
import { CognitoIdentityProviderClient, AdminCreateUserCommand, AdminAddUserToGroupCommand, AdminDeleteUserCommand, DeliveryMediumType } from '@aws-sdk/client-cognito-identity-provider';
const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(env);
Amplify.configure(resourceConfig, libraryOptions);
const client = new CognitoIdentityProviderClient();
const clientApi = generateClient<Schema>();
export const handler: Schema["addUser"]["functionHandler"] = async (event) => {
return 'Hello, World!';
};
Ensure permissions are set to access auth in amplify/auth/resource.ts:
import { defineAuth } from '@aws-amplify/backend';
import { addUser } from './add-user/resource';
export const auth = defineAuth({
loginWith: {
email: true
},
groups: ["ADMINISTRATORS", "EXPOSITORS"],
access: (allow) => [
allow.resource(addUser).to(["createUser", "addUserToGroup", "deleteUser"])
]
});
Also add permissions to access data in amplify/data/resource.ts:
import { type ClientSchema, a, defineData } from '@aws-amplify/backend';
import { addUser } from '../auth/add-user/resource';
const schema = a.schema({
Administrator: a
.model({
sub: a.id().required(),
firstName: a.string().required(),
lastName: a.string().required(),
email: a.email().required(),
phone: a.string()
})
.identifier(['sub'])
.authorization(allow => [
allow.group('ADMINISTRATORS'),
allow.group('EXPOSITORS').to(['read'])]),
addUser: a
.mutation()
.arguments({
email: a.email().required(),
firstName: a.string().required(),
lastName: a.string().required(),
phone: a.string(),
admin: a.boolean()
})
.returns(a.string())
.authorization(allow => [
allow.group('ADMINISTRATORS')])
.handler(a.handler.function(addUser)),
})
.authorization(allow => [
allow.resource(addUser)
]);
export type Schema = ClientSchema<typeof schema>;
export const data = defineData({
schema
});
Finally declare function in amplify/backend.ts:
import { defineBackend } from '@aws-amplify/backend';
import { auth } from './auth/resource';
import { data } from './data/resource';
import { addUser } from './auth/add-user/resource';
const backend = defineBackend({
auth,
data,
addUser
});
Run the sandbox and get the error:
npx ampx sandbox