图像调整器:未正确访问专用S3存储桶

时间:2015-07-28 00:59:44

标签: image amazon-s3 imageresizer

我们一直在使用当前版本的Image Resizer(http://imageresizing.net/)为我们的网络应用创建一个Proof of Concept图像缩放器。 产品版本将由CloudFront和弹性Load Balancer提供。 根据文档,这个想法是让Image Resizer服务器运行并访问媒体(JPG)的一个或多个S3存储桶,并使用磁盘缓存来加速该过程。

强制要求S3存储桶保持私有状态,因此我们设置了IAM帐户 - 此帐户具有对这些存储桶的完全访问权限 - 这已由AWS Policy Simulator验证。

使用我当前的IR配置,解决方案仅在我公开图像时才有效。它几乎就像忽略了IAM凭证一样。

我的缩放器配置如下,IAM访问密钥和密钥已更改。

<resizer>
    <pipeline fakeExtensions=".ashx" />
    <plugins>
        <add name="DiskCache" />
        <add name="S3Reader2" region="ap-southeast-2" prefix="~/s3" vpp="true" cacheMetadata="true"
            buckets="images-vendorA, images-vendorB"
            accessKeyId="AAABBBCCC" 
            secretAccessKey="123456798" />

    </plugins>
    <diagnostics enableFor="allhosts" />    
</resizer>

我承认我们没有这方面的许可证,但我们正处于开发阶段,而不是生产阶段 - 而且我没有看到任何doco只能通过许可证密钥启用。

是否有其他人遇到任何让Image Resizer访问私有S3内容的问题?如果有,你是如何克服这个问题的呢?

我们无法公开图像存储桶,因为它会违反我们的数据提供商的合同义务。

1 个答案:

答案 0 :(得分:0)

行。与往常一样,您在stackoverflow上发布,然后解决方案呈现自己!

我的假设是,由于Windows错误日志,imageresiser在访问文件时遇到问题 - 因此它是权限/ IAM问题。

事实并非如此。对元数据的仔细检查揭示了罪魁祸首。 事实上有些人在公开场合工作时有点误报 - 这只是一个不吉利的突破,有些人以这种方式工作而其他人没有。

我将解释 - 我们使用2种方法将我们的测试图像上传到S3。一种方法是使用Web控制台,一种方法是使用第三方产品CloudBerry S3 explorer Pro。由于我们在Cloud Berry中的设置,它上传了我们的文件并在此过程中对它们进行了编辑,并添加了Content-Encoding:gzip元数据。

这是让它全部消失的关键线索。那些通过AWS控制台上传的内容可以说是纯粹的。 Image Resizer无法读取gzip压缩文件。

那里的课程 - 在使用第三方产品时,请观察您的元数据和编码设置。

我没有删除存储桶中的所有文件,删除了所有公共权限并通过AWS控制台上传,一切正常!

我希望这些信息能够在将来帮助其他人。