`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, boto3 |
2 | Lambda-Einstellungen | Lambda |
Umgebung | Ver. |
---|---|
macOS Catalina | 10.15.3 |
Python | 3.7.3 |
boto3 | 1.11.17 |
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
from datetime import datetime, timedelta, timezone
from boto3.session import Session
def _localtime(time_zone):
"""_localtime
"""
return datetime.now(timezone.utc)+timedelta(hours=int(time_zone))
def _write_to_s3(param):
"""_write_to_s3
"""
access_key_id = param.get('aws_access_key_id')
secret_access_key = param.get('aws_secret_access_key')
region_name = param.get('aws_region_name')
bucket_name = param.get('s3_bucket_name')
file_name_format = param.get('s3_file_name_format')
encode = param.get('s3_encode')
data = param.get('data')
session = Session(aws_access_key_id=access_key_id,
aws_secret_access_key=secret_access_key,
region_name=region_name)
s3 = session.resource('s3')
bucket = s3.Bucket(bucket_name) # pylint: disable=no-member
fname = '{}.csv'.format(_localtime(time_zone=9).strftime(file_name_format))
print('fname: {}'.format(fname))
obj = bucket.Object(fname)
try:
obj.put(
Body=data.encode(encode, 'ignore'),
ContentEncoding=encode,
ContentType='text/csv'
)
except AttributeError as e:
print(e)
sys.exit()
def lambda_handler(event, context):
"""lambda_handler
"""
print('event: {}'.format(event))
print('context: {}'.format(context))
param = {
'aws_access_key_id': os.getenv('S3_ACCESS_KEY_ID', ''),
'aws_secret_access_key': os.getenv('S3_SECRET_ACCESS_KEY', ''),
'aws_region_name': os.getenv('S3_REGION_NAME', ''),
's3_bucket_name': os.getenv('S3_BUCKET_NAME', ''),
's3_file_name_format': os.getenv('S3_FILE_NAME_FORMAT', ''),
's3_encode': os.getenv('S3_ENCODE', ''),
'data': _localtime(time_zone=0).strftime('%Y-%m-%dT%H:%M:%S+00:00')
}
_write_to_s3(param=param)
return {
'status_code': 200
}
if __name__ == '__main__':
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 |
---|---|
S3_ACCESS_KEY_ID | {aws_access_key_id} |
S3_SECRET_ACCESS_KEY | {aws_secret_access_key} |
S3_REGION_NAME | {region_name} |
S3_BUCKET_NAME | {bucket} |
S3_FILE_NAME_FORMAT | e.g. release/%Y-%m/%Y-%m-%d |
S3_ENCODE | e.g. cp932 |
`{} ist für jede Umgebung unterschiedlich. ``
Recommended Posts