var path = require("path"); var fs = require('fs'); var mime = require('mime'); var AWS = require('aws-sdk'); AWS.config.loadFromPath('./s3-deploy/config.json'); let s3 = new AWS.S3();
const uploadDir = function (s3Path, bucketName) { function walkSync(currentDirPath, callback) { fs.readdirSync(currentDirPath).forEach(function (name) { var filePath = path.join(currentDirPath, name); var stat = fs.statSync(filePath); if (stat.isFile()) { callback(filePath, stat); } else if (stat.isDirectory()) { walkSync(filePath, callback); } }); }
walkSync(s3Path, function (filePath, stat) { let bucketPath = filePath.substring(s3Path.length + 1); let mimeType = mime.getType(bucketPath); let params = { Bucket: bucketName, Key: bucketPath.replace(/\\/g, '/'), Body: fs.readFileSync(filePath), ContentType: mimeType }; s3.putObject(params, function (err, data) { if (err) { console.log(err) } else { console.log('Successfully uploaded ' + bucketPath + ' to ' + bucketName); } }); }); };
请注意选择Custom SSL Certificate, 然后输入框中,AWS会自动列出可用的证书列表,如果没有,则点击Request or Import a certificate with ACM 选择上面新增的就好了 在浏览器访问这个cloudfront地址,就可以看到https的标志,查看这个https证书就可以得到自定义的这个域名,而不是cloudfront开头的,看起来是不是很高大上。
Webhooks 里提供了几十种状态,所有这些状态都会注册到Stripe里一个叫webhooks事件钩子的地方,我们可以指定不同事件的触发时,转发数据到某个我们自己搭建好的Web Api上。(下图是我们的服务器end point, 因为我们没有用到服务器,使用的是亚马逊lambda做一个Serverless)
举个支付宝的栗子
服务端 (Serverless)
以AWS的Lambda + API gateway为例, 其中,前者是用来定义API, 后者是做路由。