grunt/npm插件grunt- S3 + knox不上传到S3
grunt/npm plugin grunt-s3 + knox not uploading to S3
我正在尝试将S3部署步骤集成到我的Grunt工具链中,以便将新构建的文件上传到AWS。然而,这个步骤总是无声地失败(声称成功,但没有做任何事情),在调试结果时,我发现了一些不同的点,这些点正在被挂起。我使用grunt- S3作为处理grunt命令的包,它反过来调用包装Amazon S3 API的knox包。
事情就在这里崩溃了:
1)在逻辑中有一个点,knox使用fs包来尝试获取它即将通过fs上传的文件的大小。stat(文件,回调)。据我所知,该进程在fs. js之间的node.js层的某个地方死亡。Stat调用和被调用的回调。我在回调逻辑中设置了断点和'调试器'语句,节点检查器和IntelliJ调试器似乎都不能在调用fs.stat()后捕获该进程。
2)如果我破解knox插件并更改fs。如果调用fs.statSync(),则进程成功继续。但是,在稍后的过程中,我可以看到knox使用S3设置了预期的PUT URL来上传文件,然后调用stream.pipe()来上传文件。由于stream.pipe()调用,似乎没有发生任何事情,而且我在WireShark上看不到任何表明我的计算机和AWS之间正在进行上传的活动。但是,如果我使用命令行工具s3cmd进行上传,文件上传得很好。
我准备在这一步中放弃grunt并直接调用s3cmd,但如果可能的话,我喜欢用grunt的方式来做。有人对这两个步骤中可能发生的事情有什么建议吗?
谢谢!
你坐在我的代理后面吗?如果是这样,诺克斯将不起作用。如果没有,你的s3-config是什么样的?
另一个需要注意的重要事项是存储桶的位置。手动设置区域(在我的示例中是"eu-west-1")对我很有帮助,因为Knox默认将区域设置为"us-standard"。查看这里的可能值列表,检查您的桶属性所在的位置,并手动设置该值!
这里有一个(对我来说)工作配置:
s3: {
options: {
key: "my-key",
secret: "my-secret",
access: "public-read",
bucket: "my-bucket",
region: "eu-west-1"
},
mysubtask: {
upload: [
{
src: "src/*.js",
dest: "/dist/",
gzip: true,
headers: {
'Content-Type': 'application/javascript; charset=utf-8'
}
}
]
}
}
我建议使用aws cli
api来实现这一点。你所要做的就是配置aws cli
和grunt-shell
设置完成后,可以使用shell命令同步文件。检查下面的代码片段
/**
* Commands for copying assets from local to s3 bucket.
* here we are using `aws s3 sync` command instead of `aws s3 cp`
*/
let commands = [
'echo "####### sync started #######"',
'aws s3 sync ./www s3://bucketName/path --acl public-read',
'echo "####### sync completed #######"'
];
/**
* Invalidate cache only when env is production
*/
if(env === "production") {
commands.push('echo "####### cache invalidation started #######"');
commands.push('aws cloudfront create-invalidation --distribution-id {distribution_id} --paths "/*"');
}
grunt.config.set("shell", {
s3sync: {
command: commands.join('&&')
}
});
grunt.loadNpmTasks('grunt-shell')
- Amazon S3 REST API大小不正确
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- 为什么使用AWS Signature v4对S3的REST调用并没有真正使用签名过程
- S3文件上传文件对象使用节点js
- Meteor和S3:如何通过一次上传/编辑定义三个不同的图像
- 如何使用JS检查AWS S3上是否存在动态创建的文件
- 如何在aws S3 javascript SDK中配置interval和max_attempts
- javascript将对象数组转换为字符串以存储在s3中
- 蒸发js和s3的php签名url
- 如何通过NodeJS将文件上传到S3并在浏览器中跟踪进度
- 流星:无法使用 CollectionFS 将图像上传到 S3
- AWS S3 JavaScript 开发工具包 getSignedUrl 仅返回基本路径
- 编校.js S3 上传问题
- S3 PUT没有't使用javascript中的预签名URL
- 如何使用Angular$http.jsonp从S3加载JSON文件
- NodeJS:通过请求和knox将远程文件上传到S3
- knox S3上传损坏或截断的文件
- grunt/npm插件grunt- S3 + knox不上传到S3
- 使用nodejs和knox我如何看到S3桶中的文件
- Node.js knox s3图像检索