1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AlibabaCloud FunctionComputeでRDSインサート

Posted at

こんにちは。ひつじです。

AlibabaCloudのFaasサービスのFunctionComputeでRDSインサートをやってみました。
各メガクラウドでのFaasサービスは以下の通りです。AWS Lambdaとかは有名ですよね。

AWS Azure GCP Alibaba
AWS Lambda Azure Functions Cloud Functions Function Compute

ゴール

Function Computeで1分間隔でRDSにインサートを実行する

サービスの作成

FunctionComputeで最初にやることはサービスの作成です。
今回は何も考えずにデフォルトで作成しますが、VPCに所属させたり、他のプロダクトへのアクセス権限を細かく設定したり、ログサービスと連携させたり設定ができます。

このサービスという定義の中に複数の関数を登録できます。

スクリーンショット 2019-07-30 14.38.22.png

スクリーンショット 2019-07-30 14.38.29.png

関数の作成

ここから実際にプログラムの作成工程に入ります。
今回は、以下の仕様で作成していきたいと思います。

・1分に1回起動するプログラムとする。
・ランタイムはPython2.7とする。
・pymysqlライブラリを利用しRDSにアクセスする。

関数テンプレート

今回は空の関数を使います。

スクリーンショット 2019-07-30 14.45.07.png

トリガーの設定

今回はトリガータイプを「タイムトリガー」にします。
トリガー名を任意で入力、間隔を「1」に設定します。
こうすることで1分間隔でプログラムが実行されます。

スクリーンショット 2019-07-30 14.45.37.png

関数の設定

ここで実際のプログラムを記述できます。
今回はpymysqlライブラリを利用するため、コード設定の「Zipファイルのアップロード」からpymysqlライブラリをアップロードしましょう。

スクリーンショット 2019-07-30 14.55.10.png

その後、「オンライン編集」にてRDSへのインサートの処理を記述していきます。

# -*- coding: utf-8 -*-
import logging
import json
import time
import re
from aliyun.log.logitem import LogItem
from aliyun.log.logclient import LogClient
from aliyun.log.getlogsrequest import GetLogsRequest
from aliyun.log.putlogsrequest import PutLogsRequest
from aliyun.log.listlogstoresrequest import ListLogstoresRequest
from aliyun.log.gethistogramsrequest import GetHistogramsRequest
from datetime import datetime
import pymysql.cursors

nowstr=datetime.now().strftime("%Y/%m/%d %H:%M:%S")

connection = pymysql.connect(
           host='rm-e9bx176258xp97945xo.mysql.japan.rds.aliyuncs.com',
                       user='scsk_cho',
                       password='Pub12345',
                       db='pacro',
                       charset='utf8mb4',
                       cursorclass=pymysql.cursors.DictCursor)

def handler(event, context):
  logger = logging.getLogger()
  sql="insert into t_fc(name,date) values ('sheep','"+nowstr+"')"
  #表示テスト1
  logger.info(sql)
  try:
    with connection.cursor() as cursor:
    #表示テスト2
      print "print display test"
      cursor.execute(sql)
      connection.commit()  
  except:
    connection.rollback()  
  #表示テスト3
  return "return display test"


ここまで記述できたら手動で実行してみましょう。
スクリーンショット 2019-07-30 15.10.52.png

結果確認

Execution Result にて実行結果を確認していきます。
Execution Resultが表示されていない場合が、Viewタブから開きましょう。

確認ポイント

  1. Status200であること
  2. ResponseにてReturnで指定した引数が表示される
  3. loger.infoで出力した文字列(今回SQL)が表示される
  4. printで指定した文字列が表示される。

スクリーンショット 2019-07-30 15.15.24.png

最後にRDSの中身をみてみましょう。

スクリーンショット 2019-07-30 15.29.17.png

最後に

いかがでしたでしょうか。
基本的なとこですが、なんとかうまくいきましたね。
それではご査収ください : )

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?