首页 > 解决方案 > 从在另一个 AWS 账户中运行的 lambda 更新 SSM 参数?

问题描述

我在 AWS 账户 1 中有一个 lambda。

我在 AWS 账户 2 中有一个 SSM 参数。

我想像这样在 lambda 中编写代码:

const ssm = new AWS.SSM({apiVersion: "2014-11-06"});

function updateSsmParamInOtherAwsAccount(newSsmValue) {
  const params = {
    Name: "ssm-parameter-name",
    Value: newSsmValue,
    Overwrite: true,
    Type: "String",
  };

  ssm.putParameter(params, function (err) {
    if (err) {
      console.error(
        err,
        err.stack
      );
    } else {
      console.log(
        `Successfully set SSM param`
      );
    }
  });
}

我了解如何使用 IAM 为此授予权限

明白的是如何配置aws javascript sdk以指向另一个 AWS 账户。

如上面示例中所写,它将更新运行 lambda 的同一 AWS 账户中的 SSM 参数。似乎没有任何环境变量配置选项允许这样做。

有人知道如何在这里连接点吗?

标签: amazon-web-servicesaws-lambda

解决方案


由于您了解跨账户 IAM 角色的使用,正如您所写,我猜所有角色和权限都已正确设置。

因此,您必须对所有 SDK 做同样的事情,而不仅仅是 JavaScript。即,在您的 lambda 函数中,您必须明确承担 IAM 角色AWS Account 2在 JS 中,您必须调用assumeRole并向其提供来自第二个账户的 IAM 角色。

assumeRole调用将返回临时 AWS 凭证,您可以使用该凭证访问第二个账户。在这个SO 中,答案是一个很好的例子,你可以在 JS 中做到这一点。其他特定于 lambda(但适用于 python)的示例在此处


推荐阅读