---
title: "S3 Upload confirmation"
section: "build-a-backend/functions/examples"
platforms: ["android", "angular", "flutter", "javascript", "nextjs", "react", "react-native", "swift", "vue"]
gen: 2
last-updated: "2024-12-09T21:42:11.000Z"
url: "https://docs.amplify.aws/react/build-a-backend/functions/examples/s3-upload-confirmation/"
---

You can use `defineStorage` and `defineFunction` to create a function trigger to confirm uploading a file.

To get started, install the `@types/aws-lambda` [package](https://www.npmjs.com/package/@types/aws-lambda), which contains types for different kinds of Lambda handlers, events, and responses.

```bash title="Terminal" showLineNumbers={false}
npm add --save @types/aws-lambda
```

Update your storage definition to define the onUpload trigger as below:

```ts title="amplify/storage/resource.ts"
import { defineFunction, defineStorage } from "@aws-amplify/backend";

export const storage = defineStorage({
  name: 'myProjectFiles',
  triggers: {
    onUpload: defineFunction({
      entry: './on-upload-handler.ts'
      resourceGroupName: 'storage',
    })
  }
});
```

Next, create a file named `amplify/storage/on-upload-handler.ts` and use the following code to log the object keys whenever an object is uploaded to the bucket. You can add your custom logic to this function as needed.

```ts title="amplify/storage/on-upload-handler.ts"
import type { S3Handler } from 'aws-lambda';

export const handler: S3Handler = async (event) => {
  const objectKeys = event.Records.map((record) => record.s3.object.key);
  console.log(`Upload handler invoked for objects [${objectKeys.join(', ')}]`);
};
```

Now, when you deploy your backend, this function will be invoked whenever an object is uploaded to the bucket.
