Можно ли пометить входящие файлы через AWS Transfer Family в S3?

На данный момент я столкнулся с проблемой, заключающейся в том, что я не могу определить, был ли файл PUT PUT через AWS Transfer Family или через графический интерфейс S3.

Есть ли какие-либо изменения в файлах тегов по умолчанию, которые размещаются на S3 через AWS Transfer Family?

С уважением, Рибасе

2 ответа

Метаданные объекта S3, описанные в руководстве пользователя Transfer Family для обработки после загрузки, указывают на то, что Transfer Family загрузил это.

Один из вариантов использования и применения метаданных — это когда у пользователя SFTP есть входящие и исходящие ящики. Для папки «Входящие» объекты помещаются клиентом SFTP. Для исходящих объекты помещаются конвейером обработки после отправки. Если есть уведомление о событии S3, нижестоящая служба на стороне процессора может выполнить вызов S3 HeadObject для метаданных, отклонить, если метаданных нет, и обрабатывать только входящие файлы.

Вы также можете использовать управляемые рабочие процессы Transfer Family для применения шага Tag. Пример применения шага «Тег» можно найти в демонстрации 1 демонстрационного видео об управляемых рабочих процессах AWS Transfer Family.

Настройте корзину S3, в которую Transfer Family записывает файлы, чтобы активировать Lambda с помощью уведомления о событии.

Используйте этот код Boto3 в Lambda. Он пометит файл принципалом, поместившим файл в S3. Если это Transfer Familiy, то это роль, которая была назначена Transfer Family для записи файлов в корзину. Если это пользователь, загружающий файлы через консоль, то это будет роль этого пользователя.

      import boto3
import json
import urllib.parse

def lambda_handler(event, context):
       
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
    principal = event['Records'][0]['userIdentity']['principalId']
    
    try:
          
       s3 = boto3.client('s3')
          
       response = s3.put_object_tagging(
                     Bucket = bucket,
                     Key = key,
                     Tagging={
                         'TagSet': [
                             {
                                 'Key': 'Principal',
                                 'Value': str(principal)
                             },
                         ]
                     }
                 )
                 
    except Exception as e:
       print('Error {}.'.format(e))
Другие вопросы по тегам