我正在尝试使用 JavaScript/TypeScript 创建 SSMClient。 我找到了大量的例子,但似乎没有任何效果。 我正在尝试从 SSM 参数存储中获取值。 这是我的最新消息:
const stsClient = new STSClient({ region: REGION });
const params = {
RoleArn: "arn:aws:iam::425112775363:policy/SSMFullAccessCognito",
RoleSessionName: "session1",
DurationSeconds: 900,
};
//Assume Role
const data = await stsClient.send(new AssumeRoleCommand(params));
const rolecreds = {
accessKeyId: data.Credentials!.AccessKeyId,
secretAccessKey: data.Credentials!.SecretAccessKey,
sessionToken: data.Credentials!.SessionToken,
};
const ssmClient = new SSMClient({ region: REGION });
console.info(ssmClient);
const cmd = new GetParameterCommand({
Name: 'test',
WithDecryption: false
});
const result = await ssmClient.send(cmd);
console.info(result);
上面说的是信用缺失,事实确实如此。 我只是无法在任何地方将“rolecreds”转换为 SSM 想要的东西。 我可以很好地承担这个角色,并获得有效的信用。
我从多个来源找到了 100 种不同的方法,但没有任何效果。 我正在运行 AWSv3。
编辑:我也在使用 Amplify。
假设
SSMFullAccessCognito
角色具有访问所需SSM参数的正确权限,您要做的就是将rolecreds
对象传递给SSMClient
。您可以执行以下操作:
const data = await stsClient.send(new AssumeRoleCommand(params));
const rolecreds = {
accessKeyId: data.Credentials!.AccessKeyId!,
secretAccessKey: data.Credentials!.SecretAccessKey!,
sessionToken: data.Credentials!.SessionToken!,
};
const ssmClient = new SSMClient({ region: REGION, credentials: rolecreds });
您似乎并没有真正使用
roleCreds
。
如果您查看 SSMClient
的文档,您会发现它需要一个可选的凭证对象,您需要在您的情况下使用该对象:(https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest /clients/client-ssm/interfaces/ssmclientconfig.html#credentials)