Как заставить python инструмент командной строки с Oauth работать в лямбде? - PullRequest
0 голосов
/ 21 января 2020

Привет, я пытаюсь запустить этот python инструмент в python лямбде.

https://github.com/googleapis/google-api-python-client/tree/master/samples/searchconsole

В настоящее время я застрял с загрузкой client_secrets. json для Oauth.

В целях тестирования я изменил его немного

from googleapiclient import sample_tools
from datetime import datetime, timedelta

def main():
  testday = datetime.now() - timedelta(days=3)
  start_date = testday.strftime('%Y-%m-%d')
  end_date = testday.strftime('%Y-%m-%d')
  property_uri = 'https://www.example.com'
  print(start_date)


  service, flags = sample_tools.init(
      [], 'webmasters', 'v3', __doc__, __file__, parents=[],
      scope='https://www.googleapis.com/auth/webmasters.readonly')

  # Get totals for the date range.
  request = {
      'startDate': start_date,
      'endDate': end_date
  }
  response = execute_request(service, property_uri, request)
  print(response)

  #Get top 10 queries for the date range, sorted by click count, descending.
  request = {
    'startDate': start_date,
    'endDate': end_date,
    'dimensions': ['query'],
    'rowLimit': 10
  }
  response = execute_request(service, property_uri, request)
  print(response)

def execute_request(service, property_uri, request):
  return service.searchanalytics().query(
      siteUrl=property_uri, body=request).execute()

def lambda_handler(event, context):
    main()

    return {
        'statusCode': 200,
        'body': 'gugus'
    }

У меня были некоторые проблемы с библиотеками, которые теперь работают, следуя этому руководству

https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html#python -package-venv

I do:

python3 -m venv v-env
source v-env/bin/activate
pip install google-api-python-client
pip install --upgrade oauth2client
pip install Pillow
deactivate
cd v-env/lib/python3.7/site-packages
zip -r9 ${OLDPWD}/function.zip .
cd $OLDPWD
zip -g function.zip lambda_function.py
aws lambda update-function-code --function-name GSCPython --zip-file fileb://function.zip

Моя проблема сейчас в том, что client_secrets. json и, возможно, файл webmasters.dat с токенами не работает. Возможно, мне нужно как-то включить их в файл function.zip? Как это сделать

Не уверен, будет ли процесс аутентификации работать с --noauth_local_webserver

Первоначально было go не go с файлами, но client_id и client_secret сохранены как переменные среды, но sample_tools здесь не очень гибкие. Я также рад за подсказки, как это изменить?

Спасибо

...