# ProductStackProps

Product stack props.

Extends: ProductStackProps
Used as props by: ProductStack

- Source: [`aws-servicecatalog/lib/product-stack.ts`](https://github.com/aws/aws-cdk/blob/v2.276.0/packages/aws-cdk-lib/aws-servicecatalog/lib/product-stack.ts#L20)
- Type last changed: v2.167.0 · 13 Nov 2024

## Example

```ts
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as cdk from 'aws-cdk-lib';
import { Bucket } from "aws-cdk-lib/aws-s3";

class LambdaProduct extends servicecatalog.ProductStack {
  constructor(scope: Construct, id: string, props: servicecatalog.ProductStackProps) {
    super(scope, id, props);

    new lambda.Function(this, 'LambdaProduct', {
      runtime: lambda.Runtime.PYTHON_3_9,
      code: lambda.Code.fromAsset("./assets"),
      handler: 'index.handler'
    });
  }
}

const userDefinedBucket = new Bucket(this, `UserDefinedBucket`, {
  bucketName: 'amzn-s3-demo-bucket',
});

const product = new servicecatalog.CloudFormationProduct(this, 'Product', {
  productName: "My Product",
  owner: "Product Owner",
  productVersions: [
    {
      productVersionName: "v1",
      cloudFormationTemplate: servicecatalog.CloudFormationTemplate.fromProductStack(new LambdaProduct(this, 'LambdaFunctionProduct', {
        assetBucket: userDefinedBucket,
      })),
    },
  ],
});
```

## Properties

- `analyticsReporting`: boolean — Include runtime versioning information in this Stack.

  **Default:** `analyticsReporting` setting of containing `App`, or value of 'aws:cdk:version-reporting' context key

- `assetBucket`: [IBucket](/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html) — A Bucket can be passed to store assets, enabling ProductStack Asset support.

  **Default:** No Bucket provided and Assets will not be supported.

- `description`: string — A description of the stack.

  **Default:** No description.

- `memoryLimit`: number = 128 — The amount of memory (in MiB) to allocate to the AWS Lambda function which replicates the files from the CDK bucket to the destination bucket.

  If you are deploying large files, you will need to increase this number
  accordingly.

- `serverSideEncryption`: [ServerSideEncryption](/cdk/api/v2/docs/aws-cdk-lib.aws_s3_deployment.ServerSideEncryption.html) — A ServerSideEncryption can be enabled to encrypt assets that are put into assetBucket.

  **Default:** No encryption is used

- `serverSideEncryptionAwsKmsKeyId`: string — For AWS_KMS ServerSideEncryption a KMS KeyId must be provided which will be used to encrypt assets.

  **Default:** No KMS KeyId and SSE_KMS encryption cannot be used
