LambdaでGoogleスプレッドシートを扱う

概要

awsのLambdaからGoogleスプレッドシートを使いたい。

ローカル環境では、スプレッドシートを使う際にはアクセス用のjsonファイルを呼び出していたが、Lambdaにjsonファイルをそのままアップロードするのにはセキュリティ的に懸念がある。ググってみるとみんなその方式っぽい...のでメモ。

Secrets Managerでログイン情報を管理

ログイン情報等を管理するツールが用意されているのでそちらで管理する。

Lambdaからの呼び出し方

def get_gc():
    client = boto3.client(service_name='secretsmanager')
    get_secret_value_response = client.get_secret_value(SecretId="<登録した際のSecretID>")

    secret_string =  get_secret_value_response['SecretString']
    credential_dic = json.loads(secret_string)    
    credentials = Credentials.from_service_account_info(credential_dic)
    credentials._scopes = 'https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'

    gc = gspread.authorize(credentials)

    return gc


def lambda_handler(event, context):    
    gc = get_gc()