# AwsSdkCall

An AWS SDK call.

- Source: [`custom-resources/lib/aws-custom-resource/aws-custom-resource.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/custom-resources/lib/aws-custom-resource/aws-custom-resource.ts#L86)
- Type last changed: v2.225.0 · 17 Nov 2025

## Example

```ts
   new cr.AwsCustomResource(this, 'GetParameterCustomResource', {
     onUpdate: { // will also be called for a CREATE event
       service: 'SSM',
       action: 'getParameter',
       parameters: {
         Name: 'my-parameter',
         WithDecryption: true,
       },
       physicalResourceId: cr.PhysicalResourceId.fromResponse('Parameter.ARN'),
     },
     policy: cr.AwsCustomResourcePolicy.fromSdkCalls({
       resources: cr.AwsCustomResourcePolicy.ANY_RESOURCE,
     }),
   });
```

## Properties

- `action`: string (required) — The service action to call.

  This is the name of an AWS API call, in one of the following forms:

  - An API call name as found in the API Reference documentation (`GetObject`)
  - The API call name starting with a lowercase letter (`getObject`)
  - The AWS SDK for JavaScript v3 command class name (`GetObjectCommand`)

- `apiVersion`: string — API version to use for the service.

  **Default:** use latest available API version

- `assumedRoleArn`: string — Used for running the SDK calls in underlying lambda with a different role.

  **Default:** run without assuming role

  Can be used primarily for cross-account requests to for example connect
  hostedzone with a shared vpc.
  Region controls where assumeRole call is made.

  Example for Route53 / associateVPCWithHostedZone

- `externalId`: string — External ID to use when assuming the role for cross-account requests.

  **Default:** no external ID

  This is an additional security measure that helps prevent the "confused deputy"
  problem where an entity that doesn't have permission to perform an action
  can coerce a more-privileged entity to perform the action.

  The external ID must be provided by the third-party service and should not
  be generated by you. This value should be unique among the third-party
  service's customers.

  This property is only used when `assumedRoleArn` is specified.

- `ignoreErrorCodesMatching`: string — The regex pattern to use to catch API errors.

  **Default:** do not catch errors

  The `code` property of the
  `Error` object will be tested against this pattern. If there is a match an
  error will not be thrown.

- `logging`: [Logging](/cdk/api/v2/docs/aws-cdk-lib.custom_resources.Logging.html) = Logging.all() — A property used to configure logging during lambda function execution.

  Note: The default Logging configuration is all. This configuration will enable logging on all logged data
  in the lambda handler. This includes:
   - The event object that is received by the lambda handler
   - The response received after making a API call
   - The response object that the lambda handler will return
   - SDK versioning information
   - Caught and uncaught errors

- `outputPaths`: string[] — Restrict the data returned by the custom resource to specific paths in the API response.

  **Default:** return all data

  Use this to limit the data returned by the custom
  resource if working with API calls that could potentially result in custom
  response objects exceeding the hard limit of 4096 bytes.

  Example for ECS / updateService: ['service.deploymentConfiguration.maximumPercent']

- `parameters`: any — The parameters for the service action.

  **Default:** no parameters

- `physicalResourceId`: [PhysicalResourceId](/cdk/api/v2/docs/aws-cdk-lib.custom_resources.PhysicalResourceId.html) — The physical resource id of the custom resource for this call.

  **Default:** no physical resource id

  Mandatory for onCreate call.
  In onUpdate, you can omit this to passthrough it from request.

- `region`: string — The region to send service requests to.

  **Default:** the region where this custom resource is deployed

  **Note: Cross-region operations are generally considered an anti-pattern.**
  **Consider first deploying a stack in that region.**

- `service`: string (required) — The service to call.

  This is the name of an AWS service, in one of the following forms:

  - An AWS SDK for JavaScript v3 package name (`@aws-sdk/client-api-gateway`)
  - An AWS SDK for JavaScript v3 client name (`api-gateway`)
  - An AWS SDK for JavaScript v2 constructor name (`APIGateway`)
  - A lowercase AWS SDK for JavaScript v2 constructor name (`apigateway`)
