通过 AWS Transfer Family 传入 S3 的文件是否可标记?

Are incoming files via AWS Transfer Family into S3 taggable?

目前我遇到一个问题,我无法确定文件是通过 AWS Transfer Family 还是通过 S3 GUI PUT。

通过 AWS Transfer Family PUT 到 S3 上的默认标签文件是否有任何变化?

问候 核碱基

post upload processing 的 Transfer Family 用户指南中描述了 S3 对象元数据,这表明 Transfer Family 上传了这个。

使用元数据的一个用例和应用是当 SFTP 用户有收件箱和发件箱时。对于收件箱,对象由 SFTP 客户端放置。对于发件箱,对象由 post 上传处理管道放置。如果有 S3 事件通知,处理器端的下游服务可以对元数据进行 S3 HeadObject 调用,如果没有元数据则关闭,只处理传入的文件。

您还可以使用 Transfer Family 管理的工作流来应用标记步骤。在 demo 1 of the AWS Transfer Family managed workflows demo video.

中可以找到使用 Tag 步骤的应用示例

配置 Transfer Family 写入文件的 S3 存储桶,以使用事件通知触发 Lambda。

在 Lambda 中使用此 Boto3 代码。它将使用将文件放置在 S3 中的主体标记文件。如果它是 Transfer Family,那么它就是分配给 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))