amazon-web-services - 从在另一个 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 参数。似乎没有任何环境变量或配置选项允许这样做。
有人知道如何在这里连接点吗?
解决方案
由于您了解跨账户 IAM 角色的使用,正如您所写,我猜所有角色和权限都已正确设置。
因此,您必须对所有 SDK 做同样的事情,而不仅仅是 JavaScript。即,在您的 lambda 函数中,您必须明确承担 IAM 角色。AWS Account 2
在 JS 中,您必须调用assumeRole并向其提供来自第二个账户的 IAM 角色。
该assumeRole
调用将返回临时 AWS 凭证,您可以使用该凭证访问第二个账户。在这个SO 中,答案是一个很好的例子,你可以在 JS 中做到这一点。其他特定于 lambda(但适用于 python)的示例在此处。
推荐阅读
- html - 如何在 Angular 6 中通过简单设置创建日期范围过滤器?
- c# - WPF 注释加载到 XPS
- java - 在android studio中无缘无故面对null
- python - 如何从字典创建数据框
- logging - 如何从 splunk 下载原始日志文件
- c# - 使用 Range.PasteAndFormat c# 时粘贴项目的顺序
- java - Java 代码生成中用于包的 Swagger-CodeGen 标记
- sql-server - 通过链接服务器从 SQL 服务器调用带有输出参数的 Oracle 存储过程
- java - 你如何使用'''public static void main(double[] args)'''中的变量?
- swift - swift中的多个if let和OR条件