【发布时间】:2021-08-13 17:29:15
【问题描述】:
我正在尝试从 Google Apps 脚本连接到 Amazon S3。我想将当前文档复制到 Amazon S3。
我尝试了下面的代码,但在尝试运行时出错。 使用的库 - https://github.com/eschultink/S3-for-Google-Apps-Script 代码如下
function test() {
var blob = DocumentApp.getActiveDocument().getBlob();
var region = 'us-east-2';
try {
S3.init("XXXX", "XXX");
S3.putObject('bucket-name', blob.getName(), blob, region);
} catch(e) {
var message = e.toString();
Logger.log("test - FAIL - unexpected message [" + message + "]");
Logger.log(e);
}
错误详情
AWS 错误 - SignatureDoesNotMatch:我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。
谁能指导我如何从谷歌应用脚本连接到 S3。
谢谢。
【问题讨论】:
-
该错误表明使用访问密钥和秘密密钥“签名”请求时出现问题。 github 代码似乎表明它使用的是 SigV4,这很好。因此,访问密钥和密钥组合不正确,或者代码未正确生成签名。您可以尝试连接到
us-east-1中的存储桶,因为它比us-east-2更老,只是为了检查它是否工作得更好? -
感谢您指出该地区。内部 s3 请求使用 us-east-1 而我的存储桶在 us-east-2
-
现在可以将文件上传到 S3,但出现“加载 PDF 文档失败”。从 S3 打开文件时。看起来文件在上传到 S3 时损坏了
var blob = DocumentApp.getActiveDocument().getAs('application/pdf'); var s3 = new S3('XXXXX', 'XXXX'); s3.putObject("bucket", blob.getName(), blob, {logRequests:true}); -
请随意创建一个包含详细信息的新问题。
-
好的,谢谢
标签: amazon-web-services amazon-s3 google-apps-script google-sheets google-docs