Créez un fichier temporaire dans AWS Lambda et téléchargez-le dans S3. De plus, je vais essayer de télécharger le fichier téléchargé sur S3 à l'emplacement d'origine.
/ tmp / log / sess /
et archivez le répertoire dans / tmp / sess-info.tar
.sess-info.tar
dans S3 \ / tmp / sess-info.tar
et téléchargez sess-info.tar
de S3 \ / tmp / sess-info.tar
./ tmp / log / sess /
s'il existe et développez sess-info.tar
en / 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('/')
bucket_name
comme il convient.Lambda Configuration
S3 Bucket
Créez un bucket portant le même nom que le code Lambda bucket_name
.
Lambda est essentiellement conçu sans état, mais vous souhaitez parfois accéder à des données avec état. Dans un tel cas, nous profiterons des avantages suivants.
Cette fois, c'était un exemple d'utilisation du répertoire / tmp de Lambda et de S3.