我使用CarrierWaveDirect将高分辨率图像上传到s3。然后,我使用该图像处理通过Cloudfront URL公开的多个版本。
上传的高分辨率文件需要对匿名用户保持私有,但web应用程序需要访问私有文件才能对其他版本进行处理。
我目前正在通过将所有上传的文件设置为CarrierWave初始值设定项中的private
config.fog_public=假
我有一个允许完全管理员访问的web应用程序IAM策略。我还为该IAM用户在应用程序中设置了ACCESSKEY和SECRETKEY。考虑到这两个标准,我认为web应用程序可以访问私有文件并继续处理,但它被拒绝访问私有文件。
*当我登录到与Web应用程序关联的用户帐户时,我能够访问私有文件,因为在URL上添加了令牌。
我不明白为什么应用程序在给定ACCESSKEY和SECRRETKEY的情况下无法访问私有文件
我很难解决你的问题。我很肯定你的问题不是
即使IAM策略授予访问权限,也无法访问私有s3文件
而是
如何手工创建一个预先签名的URL,以便在S3上获取私有文件
要点显示您正在尝试为GET yourself创建预先签名的URL。虽然这很好,但也很容易出错。
请验证您尝试使用AWS SDK for Ruby进行的工作是否正常(我在这里只发布已知可用于版本1的代码,但如果您没有受到遗留代码的阻碍,请从版本2开始):
s3 = AWS::S3.new
bucket = s3.buckets["your-bucket-name"]
obj = bucket.objects["your-object-path"]
obj.url_for(:read, expires: 10*60) # generate a URL that expires in 10 minutes
有关详细信息,请参见AWS::S3::S3Object#url和AWS::S3::Object#presigned#url的文档。
您可能需要仔细阅读将参数传递到AWS::S3.new
此处(用于凭证、区域等)。
我建议你采取以下步骤:
access_key_id
和secret_access_key
但在任何情况下,我建议您使用更高级别的SDK来为您做类似的事情。
如果这一点对你没有任何帮助,请发表评论,说明你的新发现。
使用IAM策略模拟器时,似乎必须提供对完整密钥arn的访问(),而不是别名() 有没有更好的办法来管理这个? 我知道我可以使用密钥策略管理对CMKs的访问,并且不允许从IAM进行访问,但是您不能在KMS密钥策略中使用组作为
我们有一个Lambda函数,需要能够访问私有的S3桶。 该存储桶已启用“阻止所有公共访问”,并具有以下资源策略: 我还将AmazonS3FullAccess策略直接附加到Lambda使用的IAM角色。但是,当Lambda函数尝试访问S3存储桶时,会出现访问被拒绝错误: 使用IAM用户凭据连接到S3的外部系统在尝试访问存储桶时也会收到相同的错误。 有人知道是什么导致了这个错误吗? 以下是发生错误的L
我现在正在尝试使用AWS S3。 我创建了一个没有“权限策略”的IAM用户。 并且,S3的bucket策略设置如下。 但是,此设置给出了拒绝访问错误。 桶和IAM用户在同一个AWS帐户中。 顺便说一句,如果我在IAM的策略设置中授予S3的完全访问权限,它就可以正常工作。 有没有一种方法可以只使用S3 bucket策略而不给IAM用户任何“权限策略”来访问? 如果您知道什么,我很乐意让您知道。 我可
我已经创建了一个webview应用程序,在那里我扫描二维码。在移动和桌面浏览器上一切正常,但在应用程序中,我得到。 我在下面分享一些代码: 我也尝试了这里和这里建议的解决方案,但它对我不起作用。
null 是否有一种方法可以跟踪为特定的S3 getObject请求提供访问的策略/角色? 我已经为与认知组相关联的角色运行了IAM策略模拟器,它对有问题的对象给出了拒绝。 我试图正确阻止访问的对象没有为它们设置权限。桶有: 阻止新的公共ACL和上载公共对象(建议):True 删除通过公共ACL授予的公共访问权限(建议):True 阻止新的公共桶策略(推荐):true 如果bucket具有公共策略
我正在将文件从php上传到s3bucket.its上传成功,但当我检索图像时,我得到以下错误 如果我在上传文件时设置为公开,那么我可以检索它,但我想防止未经授权的用户。 上载文件代码 在问问题之前,我已经参考了许多网站,但它对我没有帮助 Amazon S3查看私人文件 PHP Amazon S3通过URL访问私人文件 如何通过Zend_Service_Amazon_S3访问Amazon s3私有桶