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 之外提供它
我正在尝试创建一个 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 之外提供它