Does Boto3 client support connectors for GoogleAds and FacebookAds? According to documentation we can use Custom Connector but when i try to use it in the code i get the below error saying it should be one of the built in types.
[ERROR] ParamValidationError: Parameter validation failed:
Unknown parameter in connectorProfileConfig.connectorProfileProperties: "CustomConnector", must be one of: Amplitude, Datadog, Dynatrace, GoogleAnalytics, Honeycode, InforNexus, Marketo, Redshift, Salesforce, ServiceNow, Singular, Slack, Snowflake, Trendmicro, Veeva, Zendesk, SAPOData
Unknown parameter in connectorProfileConfig.connectorProfileCredentials: "CustomConnector", must be one of: Amplitude, Datadog, Dynatrace, GoogleAnalytics, Honeycode, InforNexus, Marketo, Redshift, Salesforce, ServiceNow, Singular, Slack, Snowflake, Trendmicro, Veeva, Zendesk, SAPOData
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 34, in lambda_handler
response = client.create_connector_profile(
File "/var/runtime/botocore/client.py", line 391, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 691, in _make_api_call
request_dict = self._convert_to_request_dict(
File "/var/runtime/botocore/client.py", line 739, in _convert_to_request_dict
request_dict = self._serializer.serialize_to_request(
File "/var/runtime/botocore/validate.py", line 360, in serialize_to_request
raise ParamValidationError(report=report.generate_report())
Code in Lambda :
import json
import boto3
def lambda_handler(event, context):
client = boto3.client('appflow')
### Google Ads
response = client.create_connector_profile(
connectorProfileName='GoogleAdsConn',
connectorType='CustomConnector',
# connectorLabel='GoogleAds',
connectionMode='Public',
connectorProfileConfig= {
"connectorProfileProperties": {
'CustomConnector': {
# 'profileProperties': {
# 'string': 'string'
# },
'oAuth2Properties': {
'tokenUrl': 'https://oauth2.googleapis.com/token',
'oAuth2GrantType': 'AUTHORIZATION_CODE'
# ,'tokenUrlCustomProperties': {
# 'string': 'string'
# }
}
}
},
"connectorProfileCredentials": {
"CustomConnector": {
"authenticationType": "OAUTH2",
"oauth2": {
"accessToken": "myaccesstoken",
"clientId": "myclientid",
"clientSecret": "myclientsecret",
"oAuthRequest": {
"authCode": "string",
"redirectUri": "string"
},
"refreshToken": "myrefreshtoken"
}
}
}
}
)
return {
'response': response
}
Any leads on this will be appreciated.
Thanks!
The issue was with older boto3 version. Adding a new lambda layer with latest boto3 version(1.24.70) and updating code with profileProperties it worked seamlessly. Below is the complete working code.
import json
import boto3
def lambda_handler(event, context):
client = boto3.client('appflow')
### Google Ads
response = client.create_connector_profile(
connectorProfileName='GoogleAdsConnThruLambda',
connectorType='CustomConnector',
connectorLabel='GoogleAds',
connectionMode='Public',
connectorProfileConfig= {
"connectorProfileProperties": {
'CustomConnector': {
'profileProperties': {
'developerToken': 'developerToken',
'instanceUrl':'https://googleads.googleapis.com',
'managerID':'managerID',
'apiVersion':'v11'
},
'oAuth2Properties': {
'tokenUrl': 'https://oauth2.googleapis.com/token',
'oAuth2GrantType': 'AUTHORIZATION_CODE'
# ,'tokenUrlCustomProperties': {
# "string":"string"
# }
}
}
},
"connectorProfileCredentials": {
"CustomConnector": {
"authenticationType": "OAUTH2",
"oauth2": {
"accessToken": "accessToken",
"clientId": "clientId",
"clientSecret": "clientSecret",
"oAuthRequest": {
"authCode": "authCode",
"redirectUri": "https://<your_region>.console.aws.amazon.com/appflow/oauth"
},
"refreshToken": "refreshToken"
}
}
}
}
)
return {
'response': response
}