Aws4唱歌:任务1:创建规范请求中提到的URI参数是什么

问题描述 投票:0回答:1

在aws doc https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html

步骤2:规范URI是URI的绝对路径组件的URI编码版本,它是从HTTP主机到开始查询字符串参数(如果有)的问号字符(“?”)的URI中的所有内容。这是什么意思?

你能解释一下这个例子请求https://customer-service.example.com/dev/customer/?name=alex&country=us吗?

node.js amazon-web-services signing
1个回答
1
投票

请参考aws4 npm包。 It is well documented in it's github's page

在其文档中,AWS建议使用aws-sdk,因为对于一个非常简单的任务(比如获取s3对象),URL签名可能会变得乏味。我们使用了aws4,因为在我们的代码中导入aws-sdk带来了不必要的依赖。

以下是来自aws secretmanager的列表秘密的示例。

在下面的例子中,

  • AWS服务由服务表示:'secretsmanager'
  • 动作由“X-Amz-Target”表示:“secretsmanager.ListSecrets”

您可以参考corrospoding aws服务的API来修改以下示例以满足您的需求。

请注意以下示例假设ec2具有正确的角色来执行此请求。这就是为什么你会看到它在下面的例子中使用sts。

如果您的情况不同,请检查documentation以检查密钥是如何通过aws4 api传递的。

var http  = require('http'),
    https = require('https'),
    aws4  = require('aws4')

request(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'}))

function request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') }

request(aws4.sign({
    service: 'secretsmanager',
    region: 'us-east-1',
    method: 'POST',
    path: '/',
    headers: {
        "Accept-Encoding": "identity",
        "X-Amz-Target": "secretsmanager.ListSecrets",
        "Content-Type": "application/x-amz-json-1.1"
    },
    body: '{}'
  }))
© www.soinside.com 2019 - 2024. All rights reserved.