`Dies ist ein Artikel über die Mac-Umgebung, aber die Vorgehensweise ist für die Windows-Umgebung dieselbe. Bitte lesen und probieren Sie den umweltabhängigen Teil. ``
Nachdem Sie diesen Artikel bis zum Ende gelesen haben, können Sie:
No. | Überblick | Stichwort |
---|---|---|
1 | Codierung | Python, psycopg2 |
2 | Lambda-Einstellungen | Lambda |
Umgebung | Ver. |
---|---|
macOS Catalina | 10.15.3 |
Python | 3.7.3 |
psycopg2 | 2.8.4 |
Ich denke, dass Sie Ihr Verständnis vertiefen können, indem Sie den Implementierungsinhalten und dem Quellcode tatsächlich folgen. Bitte benutzen Sie es auf jeden Fall.
Dieser Service ist ein Pay-as-you-go-System. Bitte beachten Sie.
app/lambda_function.py
"""app/lambda_function.py
"""
import os
import sys
import psycopg2
class Database():
"""Database
"""
class Parameter():
"""Parameter
"""
def __init__(self, host, port, dbname, table, user, password, query):
self.host = host
self.port = port
self.dbname = dbname
self.table = table
self.user = user
self.password = password
self.query = query
def __init__(self, param):
self.db = param
self.header = tuple()
self.records = list()
self.counts = int()
def _connection(self):
"""_connection
"""
print('connect to db: {}/{}'.format(self.db.host, self.db.dbname))
return psycopg2.connect(
host=self.db.host,
port=self.db.port,
dbname=self.db.dbname,
user=self.db.user,
password=self.db.password
)
def query(self):
"""query
"""
with self._connection() as conn:
with conn.cursor() as cursor:
try:
cursor.execute(self.db.query)
self.header = cursor.description
self.records = cursor.fetchall()
self.counts = len(self.records)
except psycopg2.Error as e:
print(e)
sys.exit()
return True
def lambda_handler(event, context):
"""lambda_handler
"""
print('event: {}'.format(event))
print('context: {}'.format(context))
param = Database.Parameter(
host=os.getenv('DB_HOST', ''),
port=os.getenv('DB_PORT', ''),
dbname=os.getenv('DB_DBNAME', ''),
table=os.getenv('DB_TABLE', ''),
user=os.getenv('DB_USER', ''),
password=os.getenv('DB_PASSWORD', ''),
query=os.getenv('DB_QUERY', '')
)
db = Database(param=param)
db.query()
return {
'status_code': 200,
'records': str(db.records),
'counts': db.counts
}
if __name__ == '__main__':
print(lambda_handler(event=None, context=None))
Führen Sie das WEB-Scraping regelmäßig mit AWS-Lambda + Python + Cron aus (https://qiita.com/nsuhara/items/0d36600511fc162827f6) und führen Sie bis zu "zip upload" durch
Schlüssel | Wert |
---|---|
DB_HOST | {host} |
DB_PORT | {port} |
DB_DBNAME | {dbname} |
DB_TABLE | {table} |
DB_USER | {user} |
DB_PASSWORD | {password} |
DB_QUERY | {query} |
`{} ist für jede Umgebung unterschiedlich. ``
VPC
Muss mit den RDS-Einstellungen übereinstimmen
Recommended Posts