谷歌脚本和 AWS SDK

Googlescript and AWS SDK

我想通过 Google 脚本中的代码在 Google Sheet 中与 Amazon Web Services DynamoDB 进行交互。但是,我不知道如何集成 AWS SDK。我希望避免必须编写一个库来处理通过 AWS HTTP API 的集成,因为有 JavaScript 和 Java SDK 可用于 SDK。有帮助吗?

(我做了一些相当广泛的 Google 和 Stack Overflow 搜索。This 是我找到的最接近答案的东西,但那是 Google App引擎,而不是 Google Apps 脚本。)

谢谢!

我即将实现它,看起来最好的方法是使用 Lambda 函数通过 API 网关查询 DynamoDB。

如果你会 NodeJS,其实并不难。

我刚刚制作了一个功能,可以为您要发出的任何 api 请求执行基本身份验证。您可能仍然需要按顺序获得一些 headers,但它会为您完成大部分艰苦的工作。

例如:

function myFunction() {
  AWS.init("MY_ACCESS_KEY", "MY_SECRET_KEY");
  var instanceXML = AWS.request('ec2', 'us-east-1', 'DescribeInstances', {"Version":"2015-10-01"});
  ...
}

我把它和一些文档放在一个仓库中以供使用。这是 link:https://github.com/smithy545/aws-apps-scripts

如果其他人觉得这有用,请回复,上面的回复之一为我提供了一个很好的入门提示,但无法对其添加评论。

下面教程中的步骤介绍了如何设置 API Gateway、Lambda 和 DynamoDb。设置完成后,您可以直接使用 URLFetch in GAS 到您的 API 网关。

http://docs.aws.amazon.com/lambda/latest/dg/with-on-demand-https-example.html

AWS link 中的代码已完成,无需额外设置即可直接使用 URL Fetch。但是,您可能希望在 API 网关上启用安全性。

在天然气方面 -

var headers = {
  "x-api-key" : AWS_KEY
};    

var event = {};
event.operation = "create";
event.tableName = AWS_DB_NAME;
event.payload.Item = yourDataObjwithKey;

var options = {
  "method":"POST",
  "headers":headers,
  "payload":JSON.stringify(event)
};    

var url = AWS_GW;
var response = UrlFetchApp.fetch(url, options);

我最近在此处添加了我自己的“AWS via Google Apps Script”的衍生版本:https://github.com/neilobremski/gas/blob/main/GasAWS.js

此处的 JavaScript 代码更现代一些,专门使用了 Utilities available in Google Apps Script for the SHA-256 stuff rather than the abandoned (but excellent!) Crypto-JS 库。

用法相同除了我移动了region参数并且有一个全局默认值。我这样做是因为资源通常位于同一区域并且重复指定它很痛苦。