Glue aws 连接 Web Api

Glue aws connect with Web Api

我已经设置了 aws glue 爬虫,并且已经将表格填充到我​​的 Glue 数据目录中。 我想使用 Web API.

访问有关 Data Catalog 的信息

例如我想GetDatabases.

当我使用 python boto3 库时,我得到了所有数据库的列表。

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

使用aws-sdkjs库时相同

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);
});

我想做的是从 Postman 调用网络 api。 Postman 使用 AWS 凭证创建 AWS 签名(在授权选项卡下)。

当我使用 postman 描述 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

我是不是漏掉了一些 header?如何调用 web api 并获取数据库列表?

感谢您的帮助。

经过大量的反复试验,我发现以下 Headers 很重要

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

如果您不想指定任何参数,则传递空 body ({}) 也很重要。