使用凭证创建 AWS SSM 客户端

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

我正在尝试使用 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。

amazon-web-services amazon-cognito aws-ssm
2个回答
1
投票

假设

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

0
投票

您似乎并没有真正使用

roleCreds
。 如果您查看
SSMClient
的文档,您会发现它需要一个可选的凭证对象,您需要在您的情况下使用该对象:(https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest /clients/client-ssm/interfaces/ssmclientconfig.html#credentials

© www.soinside.com 2019 - 2024. All rights reserved.