AWS 上的 lambda 函数内的服务帐户初始化失败 Python

Service account initialization failing inside lambda function on AWS Python

我正在尝试创建一个 lambda 函数,以便在 API 调用触发时从 google sheet 中读取。我让它在我的本地机器上工作,但是当我将它打包并把它作为一个 lambda 函数时,它不会使用 service_account.json 文件初始化 API。 我知道这一点是因为我没有看到 API 在 GCP 控制台上被访问。 这是用于初始化 API.

的代码
try:
    scopes = ["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/spreadsheets.readonly"]
    secrete_file = os.path.join(os.getcwd(), 'service_account.json')

    credentials = service_account.Credentials.from_service_account_file(secrete_file, scopes=scopes)
    service = discovery.build('sheets','v4', credentials=credentials)
    spreadsheet_id = '1W0ow-spreadsheeduidswedZNKW4qE'
    range_name = "Vender_List!A1:A1500"

    results =service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute()
    ids = results.get('values') 

我相信这与我使用os模块有关。 仅供参考 os.getcwd() returns /var/tasks/。 当我测试函数时,我得到输出:

START RequestId: b10c2b9b-23cb-4168-acbc-b2bf9e1250e8 Version: $LATEST
END RequestId: b10c2b9b-23cb-4168-acbc-b2bf9e1250e8
REPORT RequestId: b10c2b9b-23cb-4168-acbc-b2bf9e1250e8  Duration: 3033.58 ms    Billed     Duration: 3000 ms    Memory Size: 128 MB Max Memory Used: 88 MB  Init Duration: 303.20 ms    
2022-05-12T04:13:35.181Z b10c2b9b-23cb-4168-acbc-b2bf9e1250e8 Task timed out after 3.03 seconds

非常有信心您的 lambda 在尝试连接到 google api 时仅在 3 秒后超时。根据您的 VPC 设置,您可能需要确保它在私有子网内进行配置(NAT 用于出站)。否则在 VPC 之外提供它