# BucketOptions

Optional parameters for creating code using bucket.

Extends: BucketOptions
Used as props by: S3CodeV2

- Source: [`aws-lambda/lib/code.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-lambda/lib/code.ts#L864)
- Type last changed: v2.271.0 · 25 Sep 2026

## Example

```ts

import { Key } from 'aws-cdk-lib/aws-kms';
import * as s3 from 'aws-cdk-lib/aws-s3';

const bucket = new s3.Bucket(this, 'Bucket');
declare const key: Key;

const options = {
    sourceKMSKey: key,
};
const fnBucket = new lambda.Function(this, 'myFunction2', {
    runtime: lambda.Runtime.NODEJS_LATEST,
    handler: 'index.handler',
    code: lambda.Code.fromBucketV2(bucket, 'python-lambda-handler.zip', options),
});
```

## Properties

- `objectVersion`: string — Optional S3 object version.

  **Default:** no object version

  Required when `s3ObjectStorageMode` is set to `S3ObjectStorageMode.REFERENCE`.

- `s3ObjectStorageMode`: [S3ObjectStorageMode](/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.S3ObjectStorageMode.html) — How Lambda manages the storage of your code package.

  **Default:** Lambda copies the deployment package from your S3 bucket into Lambda-managed storage.

- `sourceKMSKey`: [IKeyRef](/cdk/api/v2/docs/aws-cdk-lib.interfaces.aws_kms.IKeyRef.html) — The KMS key that Lambda uses to encrypt the deployment package in Lambda-managed storage.

  **Default:** Lambda uses an AWS owned key

  This is not the key used to encrypt the source object in Amazon S3.
