Erstellen Sie eine temporäre Datei in AWS Lambda und laden Sie sie in S3 hoch. Außerdem werde ich versuchen, die auf S3 hochgeladene Datei an den ursprünglichen Speicherort herunterzuladen.

/ tmp / log / sess / und archivieren Sie das Verzeichnis in / tmp / sess-info.tar.sess-info.tar in S3 \ / tmp / sess-info.tar und laden Sie sess-info.tar von S3 \ / tmp / sess-info.tar herunter./ tmp / log / sess /, falls vorhanden, und erweitern Sie sess-info.tar auf / tmp / log / sess /.Lambda Code
import boto3
import os
import os.path
import tarfile
import shutil
def lambda_handler(event, context):
bucket_name = 'bucket_name'
tmp_dir = '/tmp/'
log_dir = '/tmp/log/sess/'
file_name = 'sess-info.tar'
key = file_name
file_path = tmp_dir + file_name
# === Step 1
# create log dir
if os.path.exists(log_dir) == False:
os.makedirs(log_dir)
# write log
with open(log_dir + 'log1.txt', 'w') as file:
file.write('hoge\n')
with open(log_dir + 'log2.txt', 'w') as file:
file.write('fuga\n')
# create log archive
with tarfile.open(file_path, mode='w:gz') as archive:
archive.add(log_dir)
# === Step 2
# create s3 resource
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket_name)
# upload log archive
bucket.upload_file(file_path, key)
# === Step 3
# delete log archive
if os.path.exists(file_path):
os.remove(file_path)
# download log archive
bucket.download_file(key, file_path)
# === Step 4
# delete log dir
if os.path.exists(log_dir):
shutil.rmtree(log_dir)
# extract log archive
with tarfile.open(file_path, mode='r:gz') as archive:
archive.extractall('/')
Lambda Configuration
S3 Bucket Erstellen Sie einen Bucket mit demselben Namen wie der Lambda-Code "Bucket_name".
Lambda ist grundsätzlich zustandslos konzipiert, aber manchmal möchten Sie auf statusbehaftete Daten zugreifen. In einem solchen Fall werden wir Folgendes nutzen.
Diesmal war es ein Beispiel für die Verwendung des Lambda-Verzeichnisses / tmp und von S3.
Recommended Posts