Клей AWS соединяются с Web Api - PullRequest
0 голосов
/ 24 апреля 2018

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

Например, я бы хотел GetDatabases .

Когда я использую python boto3 библиотека Я получаю список всех баз данных.

import boto3
glue = boto3.client('glue',region_name='us-west-2') 
glue.get_databases()

То же самое при использовании aws-sdk js library

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
var glue = new AWS.Glue();

glue.getDatabases((err,data)=>{
    if(err){
        console.log(err);
    }
    console.log(data);
});

Что я пытаюсь сделать, этопозвонить в веб-API от Почтальона.Почтальон создает подпись AWS (на вкладке авторизации), используя учетные данные AWS.

Когда я использую почтальон для описания экземпляра ec2, он работает нормально.Тем не менее, я получаю AccessDeniedException при попытке сделать

POST https://glue.us-west-2.amazonaws.com/
Headers: X-Amz-Target: AWSGlue.GetDatabases
Authorization:....
X-Amz-Date:...
Content-Type:multipart/form-data

Я пропустил какой-то заголовок?Как я могу вызвать web api и получить список баз данных?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 25 апреля 2018

После долгих проб и ошибок я обнаружил, что следующие Заголовки важны

POST / HTTP/1.1
Host: glue.us-west-2.amazonaws.com
X-Amz-Target: AWSGlue.GetDatabases
Content-Type: application/x-amz-json-1.1
X-Amz-Date: 20180425T052803Z
Authorization: AWS4-HMAC-SHA256 Credential=AWS_KEY/20180425/us-west-2/glue/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date;x-amz-target, Signature=f6dfb78d7ee837dc57ce6e13d9fd6ec0631d0c5546f0142ce997bc7e9203c7b7

Также важно пропустить пустое тело ({}), если вы этого не сделаетехочу указать любой из параметров.

...