Angenommen, Sie erstellen eine API, die die in RDS gespeicherten Daten mithilfe von AWS API Gateway, Lambda und RDS nach außen verfügbar macht, stellen Sie zunächst von Lambda aus eine Verbindung zu RDS her.
#Tabellenname: link_clicks
|Spaltenname| description |
| path |URL-Pfad|
| clicks |Linkklicks|
| stat_date |Aggregationsdatum|
Erstellen Sie in Python ein Programm, das mithilfe von Lambda eine Verbindung zu RDS (MySQL) herstellt und Informationen gemäß dem Abfrageparameter (Pfad) abruft und zurückgibt.
mkdir api
Installieren Sie PyMySQL für die Verbindung zu MySQL
pip install PyMySQL -t api
Bereiten Sie die Hauptfunktionsbeschreibungsdatei (Handler) und die Einstellungsdatei vor (Ersetzen Sie YOUR_XXX)
api/api.py
# -*- coding: utf-8 -*-
import sys
import logging
import rds_config
import pymysql
import datetime as DT
import json
#rds settings
rds_host = rds_config.db_host
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name
logger = logging.getLogger()
logger.setLevel(logging.INFO)
try:
mysql_client = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
except:
logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def handler(event, context):
"""
This function fetches content from mysql RDS instance
"""
path = event["path"]
query = "select sum(clicks) from link_clicks where path = '%(path)s' group by path" % dict(path=path)
logger.info(query)
results = []
with mysql_client.cursor() as cur:
cur.execute(query)
for row in cur:
clicks = int(row[0])
results.append({"clicks": clicks})
return json.dumps(results)
api/rds_config.py
db_host = "YOUR_HOST"
db_username = "YOUR_USERNAME"
db_password = "YOUR_PASSWORD"
db_name = "YOUR_DB_NAME"
deploy.sh
#Zip-Erstellung
(cd api && zip -r - *) > api.zip
# create lambda function
## YOUR_Lambda für die Rolle-vpc-execution-Rolle angeben
aws lambda create-function \
--region YOUR_REGION \
--function-name api \
--zip-file fileb://api.zip \
--role YOUR_ROLE \
--handler api.handler \
--runtime python2.7 \
--vpc-config SubnetIds=YOUR_SUBNET_IDS,SecurityGroupIds=YOUR_SECURITY_GROUP_ID
# update lambda function
aws lambda update-function-code \
--region YOUR_REGION \
--function-name api \
--zip-file fileb://api.zip
Überprüfen Sie, ob die API-Funktion hinzugefügt wurde, indem Sie auf Folgendes zugreifen https://ap-northeast-1.console.aws.amazon.com/lambda/home?region=ap-northeast-1#/functions?display=list
Registrieren Sie ein Testereignis über Aktionen> Testereignis konfigurieren Die Einstellungen sind wie folgt
{
"path": "/11111"
}
Klicken Sie im obigen Bild auf Speichern und testen, um zu testen
Mit dem obigen Verfahren können Sie jetzt eine Verbindung zu Lambda => RDS herstellen und die Daten durchsuchen. Die Details sind auch im aws-Dokument enthalten. Bitte beziehen Sie sich darauf. http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/vpc-rds-create-lambda-function.html
Recommended Posts