【发布时间】:2018-04-19 10:35:28
【问题描述】:
简而言之,我正在尝试通过重定向、aws lambda 和 aws-sdk 来调整图像大小。
按照有关使用 AWS 即时调整图像大小的教程AWS - resize-images-on-the-fly,我已经设法按照演练使一切正常,但是我的问题与调用存储桶有关。
目前,我可以让它工作的唯一方法是调用,
http://MY_BUCKET_WEBSITE_HOSTNAME/25×25/blue_marble.jpg.
如果图片不可用,则重定向请求,调整图片大小,然后放回存储桶中。
我想做的是通过 s3.getObject() 调用访问 aws-sdk 中的存储桶,而不是直接链接。
到目前为止,我只能访问当前存储桶中的图像,因此永远不会发生重定向。
我的想法是请求没有被发送到正确的端点,并且根据我在网上找到的内容,我将创建 sdk 的方式更改为这个 -
s3 = new aws.S3({
accessKeyId: "myAccessKeyId",
secretAccessKey: "mySecretAccessKey",
region: "us-west-2",
endpoint: '<MYBUCKET>.s3-website-us-west-2.amazonaws.com',
s3BucketEndpoint: true,
sslEnabled: false,
signatureVersion: 'v4'
})
params = {
Bucket: 'MY_BUCKET',
Key: '85x85/blue_marble.jpg'
};
s3.getObject(params, (error, data) => data);
当我直接在浏览器中访问端点时,一切正常。
但是当使用 sdk 时,只返回可用的图像。没有重定向,没有数据返回,我得到了错误。
XMLParserError:第一个标签之前的非空白。
不确定是否可以使用 s3.getObject(),似乎可以,但我似乎无法弄清楚。
【问题讨论】:
-
可以更改带有 SDK 的端点,如您所见,但它并非旨在与网站端点一起使用,因此会出现 XML 错误。网站端点也不支持基于凭据的访问——它们仅用于公共内容。为什么要尝试使用 SDK 而不是普通的 HTTP 请求?
-
大部分时间都在尝试熟悉如何使用 SDK。看起来它可以工作,但它不是并且想知道为什么。从来没有发现有什么特别说明 SDK 不是为与这样的网站端点一起工作而设计的。这就是为什么我希望在继续之前询问更多知识的人。谢谢!
标签: node.js amazon-web-services express amazon-s3 aws-lambda