我尝试测试一个需要AWS凭据(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_SESSION_TOKEN)的API,现在我在Postman环境中显式设置它们,但每次刷新凭据时都需要这样做,所以我在寻找一种自动添加这些凭据的方法,并找到了Postman预请求脚本。不幸的是,没有process.env,也没有fs.readFileSync(读取~/.aws/credentials)。有没有其他方法从外部传递信息 Postman ?
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
process.env
fs.readFileSync
~/.aws/credentials
yyyllmsg1#
您可以使用Newman传递这些值:--env-var标志可以使用集合{{token}}中的resolve占位符变量来解析运行时传递的值。从命令行使用纽曼时
--env-var
{{token}}
newman run collection.json --env-var "token=$TOKEN"
将纽曼用作库时:
const newman = require('newman') newman.run({ collection: 'collection.json', envVar: [ { "key":"token", "value":`${process.env.TOKEN}`} ], })
ct3nt3jp2#
我是这么解决的,1.构建了一个在我的计算机端口8080上运行的API。此GET API端点将读取位于~/.aws/credentials的AWS凭据,并将其返回为{" aws访问密钥ID ":""、"aws机密访问密钥":""}1.在Postman客户端工具中,我创建了名为key和secret的集合变量1.在集合Pre-request Script中添加了此代码,此代码的目的是调用在我的计算机上运行的API端点,并接受有效负载响应和更新集合变量
key
secret
Pre-request Script
pm.sendRequest({ url: "http://localhost:8080/aws/credentials", method: "GET", }, function (_, response) { if (response.status == "OK") { const body = response.json() pm.collectionVariables.set("key", body.aws_access_key_id) pm.collectionVariables.set("secret", body.aws_secret_access_key) return } else { throw new Error(response.text() || "Error fetching aws credentials") } } )
1.我在集合中的API请求现在可以使用key和secret变量值来执行后续步骤。我看到的一个缺点是团队中的每个开发人员都必须拥有这个本地API端点。我很想知道是否有更好的方法来解决这个问题。
2条答案
按热度按时间yyyllmsg1#
您可以使用Newman传递这些值:
--env-var
标志可以使用集合{{token}}
中的resolve占位符变量来解析运行时传递的值。从命令行使用纽曼时
将纽曼用作库时:
ct3nt3jp2#
我是这么解决的,
1.构建了一个在我的计算机端口8080上运行的API。此GET API端点将读取位于
~/.aws/credentials
的AWS凭据,并将其返回为{" aws访问密钥ID ":""、"aws机密访问密钥":""}
1.在Postman客户端工具中,我创建了名为
key
和secret
的集合变量1.在集合
Pre-request Script
中添加了此代码,此代码的目的是调用在我的计算机上运行的API端点,并接受有效负载响应和更新集合变量1.我在集合中的API请求现在可以使用
key
和secret
变量值来执行后续步骤。我看到的一个缺点是团队中的每个开发人员都必须拥有这个本地API端点。我很想知道是否有更好的方法来解决这个问题。