Как авторизовать API Gmail с помощью AWS lambda? - PullRequest
0 голосов
/ 18 февраля 2019

Так что я пытаюсь получить все письма от учетной записи Gmail через AWS лямбда.Когда я проверяю это локально, все работает нормально.Когда я загружаю лямбду, он говорит: «java.io.IOException: невозможно создать токены каталога»

Я использую этот код:

 private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
        // Load client secrets.
        InputStream in = TlvPartnersClient.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

        // Build flow and trigger user authorization request.
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
                .setAccessType("offline")
                .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        return new AuthorizationCodeInstalledApp(flow, receiver).authorize(TLV_PARTNER_MAIL);
    }

1 Ответ

0 голосов
/ 21 февраля 2019

Функции Lamdbda выполняются поверх Amazon Linux, и единственный доступный для записи каталог - /tmp.

Определенно, ваш TOKENS_DIRECTORY_PATH не указывает на / tmp, таким образом, исключение java.io.IOException.Если TOKENS_DIRECTORY_PATH - это какой-то путь Windows (C: *), он также не будет работать.

Также имейте в виду, что у вас есть ограничение в 512 МБ для временного хранения в лямбда-функциях.

https://docs.aws.amazon.com/lambda/latest/dg/limits.html

...