Хобрук: Ваш путь к мастерству в программировании

Расшифровать объект в AWS S3, не загружая его в локальную систему

У меня есть зашифрованный файл в ведре s3. Я хочу расшифровать его программно, не загружая его на свой локальный компьютер. Можно ли расшифровать зашифрованный файл, не загружая его на локальный компьютер?

Вещи, которые я использую для шифрования файла: библиотека boto3, ключи KMS для шифрования aws sdk, скрипт python

Я определенно могу загрузить этот файл, а затем расшифровать его на своей локальной машине следующим образом:

with aws_encryption_sdk.stream(
    mode='d',
    source=src_file,
    key_provider=kms_key
    ) as decryptor:
        for block in decryptor:
            tgt_file.write(block)

Но это возможно, если я скачаю файл в локальную систему. Я не хочу скачивать файл. Я хочу расшифровать его внутри ведра s3 и разрешить следующему процессу работать с этим расшифрованным файлом.

Любые указатели будут высоко оценены!


Ответы:


1

Нет, это невозможно напрямую. Однако вы можете создать AWS Lambda, чтобы при загрузке файла вы могли запускать Lambda для расшифровки. Дополнительные сведения см. в разделе Использование AWS Lambda с Amazon S3. .

В псевдокоде вы бы сделали что-то вроде:

def lambda_handler(event, context): 
    read file from key in the event from S3
    decrypt file as your code shows
    save decrypted file back to S3 likely in a different bucket or directory path
    notify next process that the decrypted file is available.
27.04.2019
  • С этим решением я бы предложил сохранить расшифрованный файл в другом месте S3 (и предоставить доступ только следующему процессу), иначе зачем шифровать его в первую очередь? 27.04.2019
  • Спасибо за ваш ответ @stdunbar, но похоже, что нельзя использовать aws_ecryption_sdk с помощью лямбда-функции. Я получаю сообщение об ошибке, как показано ниже: Response: { "errorMessage": "Unable to import module 'lambda_function': No module named 'aws_encryption_sdk'", "errorType": "Runtime.ImportModuleError" } 28.04.2019
  • @NavneetThakur - можете ли вы опубликовать больше кода, похожего на ваш setup.py? Я не понимаю, почему это не сработает. 28.04.2019
  • @stdunbar: вот код, который я запускаю: (Часть - 1) import json import boto3 import aws_encryption_sdk import boto3 import os from shutil import make_archive import time def lambda_handler(event, context): # TODO implement kms_key = aws_encryption_sdk.KMSMasterKeyProvider(key_ids=['arn:aws:kms:us-west-1:XXX:key/XXXXXXXXX']) s3_client = boto3.client('s3') s3 = boto3.resource('s3') 28.04.2019
  • Часть 2: #Below code copies the cipher_specimen1.txt file to s3 bucket navneettempe and renames it cipher_wages.txt copy_source = { 'Bucket': 'navneettempe', 'Key': 'cipher_specimen1.txt' } s3.meta.client.copy(copy_source, 'navneettempe','cipher_wages.txt') ct_file='cipher_wages.txt' pt_file='wages.txt' 28.04.2019
  • Часть 3: #Below code decrypts the cipher_wages.txt using the same KMS key that was used to encrypt the file with aws_encryption_sdk.stream( mode='d', source=ct_file, key_provider=kms_key ) as decryptor: for block in decryptor: pt_file.write(block) 28.04.2019
  • Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..