【发布时间】:2020-12-06 21:41:10
【问题描述】:
我的本地 Windows 机器中有 aws 凭据文件和配置文件。 使用下面的 javascript 代码,我可以从包含用户名和密码的 aws 秘密管理器获取秘密。但问题是,我的代码通过 cypress 在浏览器中运行,它无法从我的本地访问 aws 凭证文件。因此,如您所见,我已经硬编码了我的 aws 凭据信息来获取它。
我的问题是,如何从本地访问 aws 凭据文件,以便摆脱硬编码令牌?请告知
\.aws\credentials
[default]
aws_access_key_id=<access key>
aws_secret_access_key= <secret key>
aws_session_token=<session token>
aws_expiration=<datetime>
awssecretmanager.ts:
const AWS = require('aws-sdk');
const region = 'eu-central-1';
const secretName = 'secretname of my application';
const secretManager = new AWS.SecretsManager({
region,
accessKeyId : 'qbxx1234556', //hardcoded
secretAccessKey : 'axyx124545', //hardcoded
sessionToken : 'x1234; //hardcoded
});
const getSecrets = async () => {
return await new Promise((resolve, reject) => {
secretManager.getSecretValue({ SecretId : secretName }, (err, result) => {
if (err) { reject(err); }
else { resolve(JSON.parse(result.SecretString)); }
});
});
};
const getSecret = async () => {
const secret = await getSecrets();
return secret; //secret contains username and password
};
export {getSecret};
如何从我的测试文件中访问它? test.spec.ts
const secret = await getSecret();
if (secret !== undefined){
username = secret['username'];
password = secret['password'];
我尝试使用以下代码,但由于浏览器无法访问本地凭据文件,它不起作用
const credentials = new AWS.SharedIniFileCredentials({ profile: "default" });
AWS.config.credentials = credentials;
【问题讨论】:
标签: javascript aws-sdk cypress aws-secrets-manager