1

Я хочу взаимодействовать с Amazon Web Services DynamoDB в Листе Google через код в GoogleScript. Однако я не могу понять, как интегрировать SDK AWS. Я надеюсь избежать необходимости писать библиотеку для обработки интеграции через API AWS HTTP, поскольку для SDK доступны JavaScript и Java SDK. Помогите?Googlescript и AWS SDK

(я сделал некоторые довольно обширные Google и стека поиска переполнения. This ближе всего я нашел для ответа, но это Google App Engine, а не Google Apps Script.)

Благодаря!

+1

Вы видите часть на этой странице, вы связаны, где они сказали, «ГАЗ не имеет нативную поддержку XHR, который является неотъемлемой частью правильного функционирования SDK»? Похоже, что это не сработает. AWS имеет SDK для JavaScript в браузере и для JavaScript в среде NodeJS. Я не думаю, что кто-то из них собирается работать в среде Google Script. Также не уверен, почему вы указываете, что есть Java SDK, который совершенно не имеет значения при работе с JavaScript, если вы не ошибочно считаете, что Java и JavaScript каким-то образом связаны. –

+0

Спасибо за ответ. Я очень новичок в GoogleScript и не был уверен, что наличие Java SDK будет актуальным, поэтому я включил его. Этот конкретный респондент утверждает, что GAS не поддерживает XHR, но команда Google Apps Script представила свою песочницу IFRAME, что заставляет меня думать, что есть способ сделать XHR-вызовы [здесь] (https://developers.google.com/apps-script/guide/html/ограничения) и [здесь] (http://googleappsdeveloper.blogspot.com/2014/12/speeding-up-htmlservice.html). Возможно, я полностью не понимаю рамки. – heights1976

ответ

0

Я собираюсь реализовать это, и лучше всего использовать функцию Lambda для запроса DynamoDB через API-шлюз.

Это действительно не так сложно, если вы знаете NodeJS.

+0

Хотя я ценю ответ, я не уверен, насколько ценно указывать на то, что это не так сложно, если вы уже знаете, как это сделать. Я почти уверен, что точка этого сайта - поделиться тем, как что-то делать. – heights1976

+0

Если вы сообщите мне, какое взаимодействие между этими двумя вы хотите, я могу опубликовать код примера в NodeJS и рассказать вам, как он работает. Короче говоря, вам нужен сценарий NodeJS, который взаимодействует с DynamoDB, а затем загружает его в Lambda. Наконец, шлюз API, который вызывает функцию Lambda. – turtlepower

1

Я только что сделал функцию, которая выполняет базовую аутентификацию для любого запроса api, который вы хотите сделать. Возможно, вам все равно придется доставать некоторые из заголовков, но для вас большая часть тяжелой работы.

Например:

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

Я положил его в репо с определенной документацией для использования. Вот ссылка: https://github.com/smithy545/aws-apps-scripts

+0

Привет. Можете ли вы подтвердить, что код aws.js не охватывает случай, когда параметры вызова сами являются объектом. мне кажется, что вызов encodeURIComponent (JSON.stringify()) необходим, чтобы иметь возможность передавать объекты json в запросах GET .... – user2123288

+0

@ user2123288 ну, как правило, когда вы использовали бы запрос на отправку и передавали параметры как полезная нагрузка json string – smithy545

0

Ответ, если кто-либо еще считает это полезным, один из приведенных выше ответов дал мне хороший совет, но я не смог добавить комментарий к нему.

Шаги в нижеследующем учебном пособии проходят настройку API Gateway, Lambda и DynamoDb. После настройки вы можете напрямую использовать URLFetch в GAS для вашего шлюза API.

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

код в AWS ссылка завершена и не требует дополнительной настройки для работы непосредственно с помощью 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);