cli-kintone을 AWS Lambda에서 실행

할 일



cli-kintone은 AWS Lambda에서 실행됩니다.
kintone의 모든 레코드를 CSV 형식으로 출력하여 S3에 업로드 할 때까지.

cli-kintone이란?



사이보즈가 제공하는 킨톤 공식 CLI(Command Line Interface)
kintone API에서는 실현할 수 없는 데이터 전건 취득 등이 제공되고 있는 것이 특징.
2019/09/18 시점에서 v0.94이지만 문제 없게 동작하는 레벨이지만 프로덕션 환경에의 도입은 신중하게!

환경


  • 로컬(MAC)
  • kintone
  • cli-kintone v0.94
  • AWS Service (Lambda, S3, IAM Role)
  • Python 3.7

  • 절차



    cli-kintone 다운로드



    공식 cli-kintone에서 최신 버전의 Linux 실행 파일 linux-x64.zip를 다운로드하십시오.

    압축을 풀면 build/linux-x64 폴더에 실행 파일이 포함되어 있기 때문에,
    폴더없는 버전으로 zip을 다시 만듭니다.
    cd ~/Downloads
    unzip linux-x64.zip
    zip -jr cli-kintone.zip build/linux-x64/cli-kintone
    

    cli-kintone을 AWS lambda에 업로드



    Lambda의 코드 엔트리 타입으로 .zipファイルをアップロード 를 지정하면 zip 파일을 업로드 할 수 있게 된다. 이전 섹션에서 만든 cli-kintone.zip 파일을 업로드합니다.



    S3 버킷 만들기



    S3에 적합한 이름으로 버킷을 만듭니다.
    기본 설정으로 OK! !

    IAM 역할에 S3에 배치할 수 있는 권한 부여



    AWS Lambda에 연결된 IAM 역할에 다음 권한을 부여합니다.



    Description


    서비스
    S3

    권한
    PutObject

    Bucket name
    만든 버킷 이름

    Object name
    *




    환경 변수 설정





    Description


    DOMAIN
    kintone의 하위 도메인 이름

    APP_ID
    API ID

    API_KEY
    API별로 발행한 API 키

    BUCKET
    s3 버킷 이름(ARN이 아님)

    FILE_NAME
    s3에 넣을 파일 이름


    Let's 코딩! !



    파일 이름을 lambda_function.py로 새로 만듭니다.
    import json
    import subprocess
    import os
    import boto3
    
    # 環境変数の読み込み
    DOMAIN = os.environ["DOMAIN"]
    APP_ID = os.environ["APP_ID"]
    API_KEY = os.environ["API_KEY"]
    
    BUCKET = os.environ["BUCKET"]
    FILE_NAME = os.environ["FILE_NAME"]
    
    # S3オブジェクト操作
    s3 = boto3.resource("s3")
    bucket = s3.Bucket(BUCKET)
    
    def lambda_handler(event, context):
        # 出力ファイル定義
        file_name = FILE_NAME
        output_file = f"/tmp/%s" % file_name
    
        # cli-kintoneを実行してkintoneのアプリ情報を一時ファイルに出力する
        with open(output_file, "w") as f:
            cmd = f"./cli-kintone -a %s -d %s -t %s" % (APP_ID, DOMAIN, API_KEY)
            res = subprocess.check_call(cmd.split(), stdout=f)
    
        # 作成した一時ファイルをS3へファイルへアップロード
        bucket.upload_file(output_file, file_name)
    
        # レスポンス
        return {
            'statusCode': 200,
            'body': json.dumps('OK')
        }
    

    테스트



    소스 코드와 적절한 테스트 코드를 저장하고 실행하면 S3 버킷에 CSV 파일이 출력된다.



    요약



    이외와 쉽게 kintone에서 CSV를 출력하여 S3에 업로드할 수 있네요.

    이제 CloudWatchEvent와 결합하면 CSV 출력을 정기적으로 실행할 수 있습니다.
    이번에는 아무것도 언급하지 않았지만 DynamoDB와 조합하면 CSV로 출력한 내용을 DynamoDB에 연계하는 것도 실현할 수 있을 것 같습니다.

    cli-kintone에서 실행하는 명령을 변경하면 kintone에서 레코드를 가져오고 등록도 쉬워집니다.
    다른 명령 (옵션)은 공식을 확인하십시오!

    좋은 kintone, AWS 생활을! ! !

    좋은 웹페이지 즐겨찾기