Tout d'abord, connectez-vous à RDS à partir de Lambda, en supposant que vous créiez une API qui expose les données stockées dans RDS à l'extérieur à l'aide d'API Gateway, Lambda et RDS d'AWS.
#nom de la table: link_clicks
|Nom de colonne| description |
| path |chemin d'URL|
| clicks |Clics sur les liens|
| stat_date |Date d'agrégation|
Créez un programme en python qui se connecte à RDS (mysql) en utilisant lambda et récupère et retourne des informations en fonction du paramètre de requête (chemin).
mkdir api
Installez PyMySQL pour la connexion à mysql
pip install PyMySQL -t api
Préparer le fichier de description de la fonction principale (gestionnaire) et le fichier de configuration (Remplacez VOTRE_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
#création zip
(cd api && zip -r - *) > api.zip
# create lambda function
## YOUR_Lambda pour ROLE-vpc-execution-Spécifiez le rôle
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
Vérifiez que la fonction api a été ajoutée en accédant à https://ap-northeast-1.console.aws.amazon.com/lambda/home?region=ap-northeast-1#/functions?display=list
Enregistrer un événement de test à partir d'actions> configurer l'événement de test Les paramètres sont les suivants
{
"path": "/11111"
}
Cliquez sur Enregistrer et tester dans l'image ci-dessus pour tester
Avec la procédure ci-dessus, vous pouvez maintenant vous connecter à lambda => RDS et parcourir les données. Les détails sont également écrits dans le document aws, veuillez donc vous y référer. http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/vpc-rds-create-lambda-function.html
Recommended Posts