Я пытаюсь извлечь файл из s3 на основе идентификатора и даты имени файла:
Соглашение об именах:
Соглашение об именах выглядит следующим образом:
**
ID_NAME_DATE.csv : имя файла следует той же схеме
пример: 9919USEN_File_20180216.csv
пример: 9919GBEN_File_20180211.csv
**
Код:
import boto3
import re
def downloadFiletest():
#connect to s3
client = boto3.resource(u's3', aws_access_key_id=u'KEY',
aws_secret_access_key=u'TOKEN')
#used for downloading
s3 = boto3.client(u's3', aws_access_key_id=u'KEY',
aws_secret_access_key=u'TOKEN')
dateIdReg = '[0-9]{8}'
dateSuffix = re.compile(date)
print (u"= S3 Client Connected =")
# configure s3 bucket
bucket = client.Bucket(u'us-eu-Bucket')
b_folder = "/folder/example/"
c_folder = b_folder.lower() + '/'
files_not_found = True
for cList in bucket.objects.filter(Prefix=b_folder):
cFiles= cList.key
print ('file : ', cFiles)
for fileId in cFiles.lower():
files_not_found = False
f = fileId.rstrip()
print(f)
fileidreg= '[0-9]{4}[a-zA-Z]{4}'
FileID = re.compile(fileidreg)
if FileID.match(f) and dateSuffix.match(f):
print(u'cList.key.lower(): ', cList.key.lower())
old_file = cList.key
dot_index = old_file.find(u'.')
print (u'old dot file name: ', dot_index)
file_ext = old_file[dot_index:]
cfile = fileId + '_file_' + dateSuffix + file_ext
tmp_path = "/tmp/folder/" + cfile
b_path = cVal + cfile
print (u'b path : ', b_path)
s3.download_file("us-eu-Bucket", b_path, tmp_path)
print ("TEMP PATH: ", tmp_path)
if files_not_found:
print("ALERT", "No file in {0}/{1}".format(bucket, b_folder))
downloadFiletest()
Ошибка:
Пропускает fileId в cFiles.lower (): и закрывает скрипт.
Цель:
Извлеките файл из S3 и загрузите его в tmp_path
для использования по желанию.
При извлечении файла я бы хотел, чтобы скрипт выбирал файл на основе идентификатора и даты. Например:
Правило: псевдо :
Если у S3 есть файлы 9919USEN_File_20180216.csv и 9919USEN_File_20180217.csv, выберите 9919USEN_File_20180217.csv для загрузки. Также, ЕСЛИ 991USEN_File_2018.csv в S3, не выбирайте файл, так как он не соответствует правилу, fileidreg = '[0-9] {4} [a-zA-Z] {4}' и dateIdReg = '[0- 9] {8}». * 1 043 *
Правило: Visual :
9919USEN_File_20180217.csv > 9919USEN_File_20180216.csv [due to date]
9919USEN_File_20180217.csv > 991USEN_File_2018.csv [Due to Incorrect ID and Date]