# CustomResourceProviderProps

Initialization properties for `CustomResourceProvider`.

Extends: CustomResourceProviderProps
Extends: CustomResourceProviderOptions
Used as props by: CustomResourceProvider

- Source: [`core/lib/custom-resource-provider/custom-resource-provider.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/core/lib/custom-resource-provider/custom-resource-provider.ts#L11)
- Type last changed: v2.116.0 · 22 Dec 2023

## Example

```ts
const provider = CustomResourceProvider.getOrCreateProvider(this, 'Custom::MyCustomResourceType', {
  codeDirectory: `${__dirname}/my-handler`,
  runtime: CustomResourceProviderRuntime.NODEJS_22_X,
});
provider.addToRolePolicy({
  Effect: 'Allow',
  Action: 's3:GetObject',
  Resource: '*',
})
```

## Properties

- `codeDirectory`: string (required) — A local file system directory with the provider's code.

  The code will be
  bundled into a zip asset and wired to the provider's AWS Lambda function.

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

  **Default:** No description.

- `environment`: { [key: string]: string } — Key-value pairs that are passed to Lambda as Environment.

  **Default:** No environment variables.

- `memorySize`: [Size](/cdk/api/v2/docs/aws-cdk-lib.Size.html) = Size.mebibytes(128) — The amount of memory that your function has access to.

  Increasing the
  function's memory also increases its CPU allocation.

- `policyStatements`: any[] — A set of IAM policy statements to include in the inline policy of the provider's lambda function.

  **Default:** no additional inline policy

  **Please note**: these are direct IAM JSON policy blobs, *not* `iam.PolicyStatement`
  objects like you will see in the rest of the CDK.

  ```ts
  const provider = CustomResourceProvider.getOrCreateProvider(this, 'Custom::MyCustomResourceType', {
    codeDirectory: `${__dirname}/my-handler`,
    runtime: CustomResourceProviderRuntime.NODEJS_18_X,
    policyStatements: [
      {
        Effect: 'Allow',
        Action: 's3:PutObject*',
        Resource: '*',
      }
    ],
  });
  ```

- `runtime`: [CustomResourceProviderRuntime](/cdk/api/v2/docs/aws-cdk-lib.CustomResourceProviderRuntime.html) (required) — The AWS Lambda runtime and version to use for the provider.

- `timeout`: [Duration](/cdk/api/v2/docs/aws-cdk-lib.Duration.html) = Duration.minutes(15) — AWS Lambda timeout for the provider.

- `useCfnResponseWrapper`: boolean — Whether or not the cloudformation response wrapper (`nodejs-entrypoint.ts`) is used. If set to `true`, `nodejs-entrypoint.js` is bundled in the same asset as the custom resource and set as the entrypoint. If set to `false`, the custom resource provided is the entrypoint.

  **Default:** `true` if `inlineCode: false` and `false` otherwise.
