AWS S3事件-客户端标识

废话

我希望允许多个客户端可以将文件上传到S3存储桶(或多个存储桶)。S3创建事件将触发通知,该通知会将消息添加到SNS主题。这可行,但是我在确定如何确定哪个客户端上载文件时遇到了问题。我可以通过显式检查上载文件的子文件夹/ S3名称来使其工作,但是我宁愿自动将客户端标识符作为属性添加到SNS消息中。

这可能吗?我的另一个想法是使用Lambda函数作为中间人来添加属性并将其传递给SNS主题,但是如果可能的话,我还是想在没有Lambda函数的情况下进行操作。

约翰·罗滕斯坦

从S3发送到SNS事件消息结构包括一个字段:

     "userIdentity":{  
        "principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event"
     },

但是,这还取决于上载对象时使用的凭据:

  • 如果用户拥有各自的AWS凭证,则将提供访问密钥
  • 如果您使用预先签名的URL允许上传,则访问密钥将属于预先签名的URL中使用的密钥,并且您的应用程序(生成预先签名的URL)将负责跟踪谁请求上传
  • 如果您正在为每个客户端生成临时凭证(例如,通过调用AssumeRole,则将返回角色的ID)

(我没有测试所有上述情况,因此请测试它们以确认导致事件的用户Amazon客户ID的定义。)

如果您的目标是在消息中放入您自己的客户标识符,那么最好的方法是:

  • 配置事件通知以触发Lambda函数
  • 您的Lambda函数使用上面的标识符来确定您的应用程序中的哪个用户标识符触发了通知(大概是在查询应用程序用户信息数据库)
  • Lambda函数将消息发送到SNS或您希望接收消息的任何系统(如果直接发送,则可能不需要SNS)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何关闭AWS S3客户端连接

访问客户端的 AWS S3 存储桶

使用客户端加密的AWS S3数据保护

AWS S3客户端竞争条件解决方案

使用AWS S3 Java客户端获取目录和对象元数据

AWS Lambda中的S3客户端初始化缓慢

用于连接到 s3 客户端的 aws 配置文件

在.NET Core中配置AWS S3客户端

Laravel 5 Amazon AWS S3错误:客户端错误:403 RequestTimeTooSkewed

如何将文件从AWS S3下载到客户端设备?

使用KMS的AWS S3客户端加密-区域被忽略

AWS SDK v3 代入客户端角色

NodeJs:将存储在 AWS S3 上的图像提供给客户端 img 标签

为什么我们需要在 AWS S3 Java 客户端中 setReadLimit(int)

AWS CLI S3调用HeadObject操作时发生客户端错误(403):禁止

使用AWS客户端仅从单个目录复制s3文件(非递归)

React App 调用 `aws s3 sync` 将客户端本地文件夹上传到 s3

AWS Client VPN客户端-客户端通信

如何在AWS AppSync客户端中订阅多个事件?

如何获取存储桶区域并将其传递给客户端o生成预签名URLS AWS S3

使用AWS S3 php客户端在JS CSS和图像上添加标头和专家mCache-Control time mdeflate

.NET中具有KMS的AWS S3客户端加密在传输的最后一部分上发出ProtocolViolationException

AWS boto3 Chime 客户端发送 x-amz-chime-bearer 标头

AWS SES - SMTP 与 SES 客户端

Terraform AWS Cognito App客户端

AWS多个VPN客户端证书

如何从客户端启动AWS Codepipeline?

存根 AWS SQS 客户端

什么是好的Amazon S3客户端?