Я загрузил код в aws лямбду, который должен был прочитать json файлы из «папки» в корзине, обработать их и затем сохранить их обратно в ту же корзину в другой папке. Я не установил событие для запуска лямбды, я просто протестировал его, и это привело к сотням тысяч лямбда-запросов, которые я заметил на следующий день, когда проверял журналы CloudWatch. Сейчас я пытаюсь выяснить, что пошло не так, поэтому, что более логично, так это мысль о том, что я не могу читать и записывать в одну и ту же корзину, даже используя разные префиксы для различения guish «пути», как это точно? Заранее спасибо
это код python, который я использовал в лямбде:
# load jsons from s3 bucket
def load_s3_jsons(platform):
s3_path = 'unprocessed-jsons/' + platform + '/'
keys = get_s3_object_keys(s3_path)
all_jsons = []
for key in keys:
json_object = s3_client.get_object(Bucket=bucket, Key=key)
json_reader = json_object['Body'].read()
all_jsons.append(json.loads(json_reader))
return all_jsons
def get_s3_object_keys(path):
# get the list of objects in the bucket with the path prefix
s3_list_objects = s3_client.list_objects(Bucket=bucket, Prefix=path)['Contents']
# get the keys from files that end with .json
keys = [item['Key'] for item in s3_list_objects if item['Key'].endswith('.json')]
# sort keys putting the most recent version first
keys.sort(key=lambda x: ((''.join(filter(str.isdigit, x))), len(x)), reverse=True)
return keys
# upload comparison results to s3
def upload_to_s3(platform, version, data):
s3_path = 'json-results/' + platform + '/'
upload_byte_stream = bytes(json.dumps(data).encode('UTF-8'))
filename = version + '.json'
s3_resource.Object(bucket, s3_path + filename).put(Body=upload_byte_stream)