Configuring Endpoint Call Processing
Procedure
-
Sign in to the Boomi Cloud API Management (Control Center) dashboard.
-
Click API Definitions on the Get Started page or navigate to Design > APIs.
-
On the Manage your APIs with API Definitions page, in the Name column, select the API Definition link from the list. This opens the Endpoint Settings:
<your endpoint name>page. -
On the Endpoint:
<your endpoint name>page, in the Name column, select an endpoint link or settings icon next to the row you want to configure endpoint settings. -
Navigate to Call Transformations. On the Call Transformations page, specify the following information in these fields:
-
Processing Adapter:
com.mashery.proxy.customer.generic.sidecar-connector -
Perform Pre-processing: Enabled
-
Perform Post-processing Enabled
-
Data to make available for pre-processing: Enter the data one per line.
-
-
Click Save.
Sidecar Preprocess POST Request Call To Lambda Function with Client Request (Specifications)
Sidecar to Lambda Function Connection
| Field | Required Field Yes/No | Type | Description/Value | Example | Notes |
|---|---|---|---|---|---|
region | Yes | string | AWS region where Lambda function is hosted. | region: eu-west-1 | |
functionARN | Yes | string | AWS ARN to make Lambda function invocation. | functionARN: arn:aws:lambda:eu-west-1:190954361614:function:LambdaBasicAsync | |
roleARN | Yes | string | Role ARN which needs to be used for generating assume role credentials. | roleARN:arn:aws:sts::680833432085:role/ tibco_sidecar_connector_fn1 | Role Name must begin with "tibco_sidecar_connector" |
externalIdKey | Yes | string | ExternalID specified in trust policy of role in IAM will be stored in AWS Parameter Store using Key and Value pair. Key for External ID needs to be specified in this parameter. Using this key, value for External ID will be retrieved from AWS Parameter Store. | externalIdKey :tibco/prod/trustKey | Inclusion of external ID strengthen security of AWS Lambda invocation. As external ID is secure parameter, it is stored in the AWS Parameter Store using secure string. This external ID specified in the trust policy of role which we want to assume in IAM. For successful generation of assume role credentials, this external ID must be sent to AWS Lambda. Please make sure that this external ID is present in all regions of Boomi AWS Parameter Store. |
sessionName | No | string | AWS Lambda session through assume role is created with this name. | sessionName:assume-role-lambda-access-poc | If not specified, session name will be specified in the AWS Lambda Request as "TIBCO_Mashery_SideCar_Connector" |
expirationDuration | No | integer | Assume Role credentials expiration duration in minutes. | expirationDuration:15 | Default value: 60 minutes. |
Supported Optional Configurations
| Field | Required Field Yes/No | Type | Description/Value | Example | Notes |
|---|---|---|---|---|---|
synchronicity | No | string | This parameter specifies whether request sent to AWS Lambda should be synchronously or asynchronously. If AWS Lambda function needs to be invoked synchronously, then its value should be request-response. If AWS Lambda function needs to be invoked asynchronously, then its value should be Event. | synchronicity:request-response | Possible values for Default value: |
include-response-headers | No | string | Specifies API client response headers to be included in the lambda sidecar input. | ||
skip-response-headers | No | string | Specifies API client response headers to be skipped in the lambda sidecar input. This option is mutually exclusive with include-response-headers | ||
require-eavs | No | string | Specifies the mandatory application EAVs that must be set to a non-empty value before the request can be handled. These values are also included in the lambda sidecar input. | require-eavs: eav_1,eav_2,eav_3 | The EAVs ARE case-sensitive, and must be included exactly as they are known in Cloud API Management. All Application level EAVs configured must be present and set in Cloud API Management otherwise block the call. |
include-eavs | No | string | Specifies the application EAVs to be included in the Lambda function input, if they are present. | ||
require-packageKey-eavs | No | string | Specifies the mandatory package key EAVs that must be set to a non-empty value before the request can be handled. These values are also included in the lambda sidecar input. | All Package Key EAVs configured must be present and set in Cloud API Management, otherwise block the call. | |
include-packageKey-eavs | No | string | Specifies the package key EAVs to be included in the Lambda function input, if they are present. | ||
max-payload-size | No | string | Max payload size that can be sent to Lambda function in KB | max-payload-size: 50 | Default value: 10 max is 1024 KB i.e. 1 MB |
max-payload-condition | No | integer | Action to take on max_payload_size condition. Parameter can be set either filtering, blocking | max-payload-condition: filtering | Default value: blocking |
expand-input | No | string | Specified what other values needs to be included while sending request to Lambda function like requestPayload, remoteAddress, token, operation, routing | expand-input: requestPayload, operation | |
sidecar-param-<parameter name> | No | string | In case parameter map needs to sent to AWS Lambda request, then you can define multiple parameters in the format sidecar-param-<parameter_name>:<parameter_value> |
| Sidecar connector validates whether parameter value is string, boolean, integer or float, accordingly that parameter is added to the request payload which is sent to AWS Lambda function. Suppose in pre-input configuration, below sidecar params are defined:
Then below parameter map will be added in the request json which is sent to AWS Lambda function:
|
failSafe | No | boolean | Specifies whether failure of Lambda function should result in error or not. Its default value is false. It means that if failSafe is not specified, in that case if lambda function throws an error, then error will be sent to client. | failSafe: true | Default value: false |
enable_error_set | No | boolean | Specifies whether error code and error message sent by connector should be overridden by defined error sets. | enable_error_set: true | Default value: false. |
timeout | No | integer | Specifies timeout for Lambda function in milliseconds. | timeout : 500 | If timeout parameter is not specified, timeout will occur according to endpoint timeout. Sum of timeout specified in pre and post input configuration should be less then endpoint timeout. In case of timeout occurs, |
Cloud API Management Gateway Sidecar Call Configuration to Lambda Function
Sidecar call to Lambda Function
| Field | Required Field Yes/No | Type | Description/Value | Example | Notes |
|---|---|---|---|---|---|
point | Yes | string | Describes if it is Sidecar preprocessor or postprocessor. |
| |
synchronicity | Yes | string | parameter which can be set to either request-response,event | synchronicity:request-response | synchronicity request-response and event is supported. |
masheryMessageId | Yes | string | Cloud API Management Gateway unique identifier which links the inbound client request to the Lambda function. | ||
packageKey | Yes | string | Package key that was used by user client to make call to Cloud API Management Gateway. | ||
serviceId | Yes | string | Unique Id of the API service. | ||
endpointId | Yes | string | Unique Id of the service endpoint. |
Sidecar Postprocess POST Call To Lambda Function with Backend Response (Specifications)
Sidecar Connector request to Lambda function is a POST call.
Sidecar to Lambda Function Connection
| Field | Required Field Yes/No | Type | Description/Value | Example | Notes |
|---|---|---|---|---|---|
region | Yes | string | AWS region where Lambda function is hosted | region: eu-west-1 | |
functionARN | Yes | string | AWS ARN to make Lambda function invocation | functionARN: arn:aws:lambda:eu-west-1:190954361614:function:LambdaBasicAsync | |
roleARN | Yes | string | Role ARN which needs to be used for generating assume role credentials | roleARN:arn:aws:sts::680833432085:role/tibco_sidecar_connector_fn2 | Role Name should be start with "tibco_sidecar_connector" |
externalIDKey | Yes | string | ExternalID specified in trust policy of role in IAM will be stored in AWS Parameter Store using Key and Value pair. Key for External ID needs to be specified in this parameter. Using this key, value for External ID will be retrieved from AWS Parameter Store. | externalIdKey:tibco/prod/trustKey | Inclusion of external ID strengthen security of AWS Lambda invocation. As external ID is secure parameter, it is stored in the AWS Parameter Store using secure string. This external ID specified in the trust policy of role which we want to assume in IAM policy. For successful generation of assume role credentials, this external ID must be sent to AWS Lambda. Please make sure that this external ID is present in all regions of Boomi AWS Parameter Store. |
sessionName | No | string | AWS Lambda session through assume role will be created with this name. | sessionName:assume-role-lambda-access-poc | If not specified session name will be specified in the AWS Lambda Request as "TIBCO_Mashery_SideCar_Connector" |
expirationDuration | No | integer | Assume Role Credentials expiration duration in minutes. | expirationDuration:15 | Default value: 60 |
Supported Optional Configurations
| Field | Required Field Yes/No | Type | Description/Value | Example | Notes |
|---|---|---|---|---|---|
synchronicity | No | string | This parameter specifies whether request sent to AWS Lambda should be synchronously or asynchronously. If AWS Lambda function needs to be invoked synchronously, then its value should be request-response. If AWS Lambda function needs to be invoked asynchronously, then its value should be Event. | synchronicity: request-response | Possible values for synchronicity - Default value: |
include-response-headers | No | string | Specifies the API client response headers to be included in the lambda sidecar input. | ||
skip-response-headers | No | string | Specifies the API client response headers to be skipped in the lambda sidecar input. It is mutually exclusive with include-response-headers | ||
require-eavs | No | string | Specifies the mandatory application EAVs that must be set to a non-empty value before the request can be handled. These values are also included in the lambda sidecar input. | require-eavs: eav_1,eav_2,eav_3 | The EAVs ARE case-sensitive, and must be included exactly as they are known in Cloud API Management. All Application level EAVs configured must be present and set in Cloud API Management otherwise block the call. |
include-eavs | No | string | Specifies the application EAVs to be included in the lambda function input, if they are present. | ||
require-packageKey-eavs | No | string | Specifies the mandatory package key EAVs that must be set to a non-empty value before the request can be handled. These values are also included in the lambda sidecar input. | All Package Key EAVs configured must be present and set in Cloud API Management otherwise block the call. | |
include-packageKey-eavs | No | string | Specifies the package key EAVs to be included in the Lambda function input, if they are present. | ||
max-payload-size | No | string | Max payload size that can be sent to Lambda function in KB | max-payload-size: 50 | Default value: 10 max is 1024 KB i.e. 1 MB |
max-payload-condition | No | integer | Action to take on max_payload_size condition. Parameter can be set either filtering, blocking | max-payload-condition: filtering | Default value: blocking |
expand-input | No | string | Specifies what other values need to be included while sending request to lambda function like requestPayload, responsePayload, remoteAddress, token, operation, routing | expand-input: requestPayload, operation | |
sidecar-param-<parameter name> | No | string | In case parameter map needs to be sent to AWS Lambda request, define multiple parameters in the format sidecar-param-<parameter_name>:<parameter_value> |
| Sidecar connector validates whether parameter value is string, boolean, integer or float, accordingly that parameter is added to the request payload sent to AWS Lambda function. Then below parameter map will be added in the request JSON sent to Lambda:
|
failSafe | No | boolean | Specifies whether failure of Lambda function should result in error or not. The default value is false. | failSafe: true | Default value: false |
enable_error_set | No | boolean | Specifies whether error code and error message sent by connector should be overridden by defined error sets. | enable_error_set: true | Default value: false |
timeout | No | integer | Specifies timeout for Lambda function in milliseconds. | timeout: 500 | If timeout parameter is not specified, timeout will occur according to endpoint timeout. Sum of timeout specified in pre and post input configuration should be less than endpoint timeout. In case timeout occurs, |