使用AWS Lambda|AppFlow创建GoogleAds自定义连接器报错求助
解决AppFlow自定义连接器参数验证错误问题
核心原因
你遇到的ParamValidationError是因为当前环境使用的botocore版本过低,旧版本的参数校验列表里还没加入CustomConnector选项,同时代码缺少自定义连接器必需的connectorLabel参数。
解决步骤
升级Boto3/Botocore版本
Lambda默认Python runtime自带的Boto3版本通常较老,不支持Custom Connector的参数结构。你需要:- 本地创建虚拟环境,安装最新版依赖:
pip install boto3 --upgrade pip install botocore --upgrade - 将依赖打包成Lambda层,或者直接把依赖和代码一起上传,确保Lambda运行时使用新版本库。
- 本地创建虚拟环境,安装最新版依赖:
补全必填的
connectorLabel参数
当connectorType设为CustomConnector时,必须指定connectorLabel,这个值是你在AppFlow控制台注册自定义连接器时设置的标签(比如Google Ads连接器的对应标签),去掉代码里的注释并填写正确值。修正参数结构(版本升级后生效)
升级依赖后,CustomConnector会被加入参数校验允许列表,此时你的参数结构是合规的,可根据实际需求调整字段(比如如果已有refresh token,可去掉不需要的oAuthRequest字段)。
修正后的示例代码
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': { 'oAuth2Properties': { 'tokenUrl': 'https://oauth2.googleapis.com/token', 'oAuth2GrantType': 'AUTHORIZATION_CODE' } } }, "connectorProfileCredentials": { "CustomConnector": { "authenticationType": "OAUTH2", "oauth2": { "accessToken": "myaccesstoken", "clientId": "myclientid", "clientSecret": "myclientsecret", "refreshToken": "myrefreshtoken" } } } } ) return { 'response': response }
额外注意事项
connectorLabel要和AppFlow控制台显示的自定义连接器标签完全一致,大小写敏感。- 若升级依赖后仍有问题,可临时禁用botocore参数校验排查(不推荐用于生产):
client = boto3.client('appflow', validate=False)
内容的提问来源于stack exchange,提问作者Aditya Bhat
相关产品推荐
相关产品推荐

