通常当我上传到S3存储时,我使用这样的AmazonS3Client:
var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey, s3Config)
Run Code Online (Sandbox Code Playgroud)
这适用于内部使用,但现在我正在寻找为外部用户提供应用程序,并且不希望我们(sacret)访问和秘密密钥在那里.我已经设置了一个带有存储桶策略的S3存储桶,允许匿名用户上传(PutObject),但我现在如何使用Amazon SDK?如果没有提供访问权限和密钥,我似乎无法找到任何方法.
Tom*_*sen 10
可能,您不应该为公开写入打开一个桶.您可以接受大量攻击,并且需要密切关注日志文件等.
更好的解决方案是在存储桶上保留默认的私有访问权限,然后创建一个只有上传(可能还有下载)所需区域权限的IAM用户.然后,当有人想要上传文件时,您可以使用具有IAM密钥的服务器调用并返回"预签名帖子",这将允许您的客户端应用程序将新文件发布到服务器.然后,您可以使用服务器上所需的任何身份验证工具来决定是否允许某人上传,包括不进行身份验证 - 但具有滥用检测功能.执行此操作时,IAM用户的密钥永远不会发送到客户端,客户端可能处于调试会话等.
由于整个帖子是预签名的,您还可以决定允许文件的位置,上传的文件名等,并在服务器响应中返回该文件.