-1

我们有一个主账户和几个子账户。我编写了一个 lambda 代码,用于在主账户中搜索云监控警报,并将警报的详细信息发送到 Amazon Chime Webhook。

当前的要求是使用 lambda 代码循环遍历所有账户并搜索各个账户的警报。

4

2 回答 2

1

如果您只需要访问 CloudWatch 事件/日志,您可以启用跨账户访问,从而允许您从监控账户(为了更好的安全性而推荐)或您的主账户运行所有内容。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html

如果您需要访问每个账户,您需要执行以下操作: - 在每个账户中创建 IAM 角色,该角色可由主账户中的 Lambda 代入

  • 在您的 lambda 中,您的主循环看起来像这样。
for accountId in <list of accounts>
  for region in <region list>
     awsConfig = getAssumeRoleCredtionals(accountId, region)  // This is an AWS.Config
     ec2 = new AWS.EC2(awsConfig)
     results = ec2.describeInstances()
  end for
end for
于 2020-01-24T13:38:26.340 回答
0

您可以将“sts:AssumeRole”权限附加到附加到您的 lambda 函数的角色,并以这样的方式正确您的函数,以便它使用该权限切换到另一个帐户。

以下是您可能有用的链接,可用于获取如何切换角色的信息:

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html

但是要完成用例工作,您的主帐户应该创建角色以切换到另一个帐户。

希望以下链接对您有所帮助:

AWS: Boto3: AssumeRole 示例,其中包括角色使用

于 2020-01-24T05:42:20.817 回答