如何在AWS Lambda中用非密钥JSON认证Google reCAPTCHA Enterprise客户端
在AWS Lambda中使用GCP工作负载身份初始化reCAPTCHA Enterprise Python客户端
基于你已完成的GCP工作负载身份配置,以下是在AWS Lambda中实现reCAPTCHA客户端初始化及核心操作的具体步骤:
1. 配置文件与依赖准备
- 将生成的非密钥JSON配置文件重命名为
gcp_workload_identity.json,放入Lambda代码包的根目录 - 确保Lambda部署包包含必要依赖:
google-cloud-recaptchaenterprise(reCAPTCHA客户端库)google-auth(处理外部账号身份验证)
2. 加载凭证并初始化客户端
使用Google Auth的外部账号凭证类加载配置,生成可直接用于reCAPTCHA客户端的凭证对象:
from google.oauth2.external_account import Credentials import recaptchaenterprise_v1 # 加载GCP工作负载身份配置 credentials = Credentials.from_file('gcp_workload_identity.json') # 初始化reCAPTCHA Enterprise客户端 client = recaptchaenterprise_v1.RecaptchaEnterpriseServiceClient(credentials=credentials)
3. Lambda执行角色权限配置
Lambda的IAM执行角色必须具备以下权限:
sts:GetCallerIdentity:用于生成AWS请求令牌,供GCP验证身份合法性- 允许出站访问以下服务端点:
- GCP STS服务:
sts.googleapis.com - GCP IAM凭证服务:
iamcredentials.googleapis.com - AWS元数据服务:
169.254.169.254(Lambda默认可访问,若使用私有VPC需配置对应路由或VPC端点)
- GCP STS服务:
4. 示例:创建并处理reCAPTCHA评估
以下是使用初始化后的客户端创建评估并返回风险结果的示例代码:
def lambda_handler(event, context): # 从事件中获取前端传入的reCAPTCHA令牌和站点密钥 recaptcha_token = event['recaptcha_token'] site_key = event['site_key'] project_id = '<你的GCP项目ID>' # 构建评估请求 assessment = recaptchaenterprise_v1.Assessment() assessment.token = recaptcha_token assessment.site_key = site_key request = recaptchaenterprise_v1.CreateAssessmentRequest( parent=f"projects/{project_id}", assessment=assessment ) # 发送评估请求 response = client.create_assessment(request=request) # 解析风险结果 risk_score = response.risk_analysis.score return { 'statusCode': 200, 'body': { 'risk_level': 'high' if risk_score >= 0.7 else 'low', 'score': risk_score } }
关键注意事项
- 若Lambda运行在私有VPC环境,需配置NAT网关或GCP服务的VPC端点,确保能访问GCP的API服务
- 确认GCP服务账号的
Workload Identity User角色已正确关联到Lambda执行角色的ARN(作为AWS身份提供商的主体) - 整个流程无需管理GCP服务账号密钥,身份验证通过AWS与GCP的工作负载身份联盟自动完成
内容的提问来源于stack exchange,提问作者Mat
相关产品推荐
相关产品推荐

