使用AWS Lambda调用Google服务账号时遭遇403 Forbidden错误求助
Google Campaign Manager 360 API调用403错误排查(AWS Lambda + 服务账号)
我正在开发集成应用,因涉及服务器到服务器交互选择使用服务账号(Service Account),流程是通过AWS Lambda调用Google服务账号获取Google Campaign Manager 360 API的广告系列数据,下载至S3桶用于SA的BI报表。但配置并调整Lambda代码后始终出现403错误,无法定位原因。
我的操作步骤:
- 创建服务账号,为自己分配所有者权限,账号本身拥有用户权限
- 复制服务账号JSON密钥文件,供Python和Google API使用
Lambda Python代码(第20行执行失败):
import json import os from google.oauth2 import service_account from googleapiclient.discovery import build import googleapiclient.discovery SCOPES = ['https://www.googleapis.com/auth/dfareporting', 'https://www.googleapis.com/auth/ddmconversions'] delegate = os.environ['DELEGATE_EMAIL'] profile_id = os.environ['PROFILEID'] def lambda_handler(event, context): SERVICE_ACCOUNT_FILE = 'service.json' print(SERVICE_ACCOUNT_FILE) # 从服务账号文件和权限范围创建凭证对象 credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) print('<< CREDENTIAL >> ', credentials) # delegated_credentials = credentials.with_subject(delegate) gcm360_client = build('dfareporting', 'v4', credentials=credentials) request =gcm360_client.campaigns().list(profileId=profile_id) print('<< REQUEST >> ',request) response = request.execute() # 第20行,此处执行失败 # print('<< RESPONSE >> ',response) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
Lambda错误信息:
403 禁止访问
{
"error": {
"code": 403,
"message": "该用户没有此配置文件的足够权限。",
"errors": [
{
"message": "该用户没有此配置文件的足够权限。",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}
内容的提问来源于stack exchange,提问作者Anthony Williams
相关产品推荐
相关产品推荐

