通过 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))
目前我遇到一个问题,我无法确定文件是通过 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))