跟踪多个AWS账户的AWS资源

如何在多个AWS账户之间有效pipe理AWS资源? 现在,我想:

  • 获取EC2,RDS等资源列表
  • 执行基本操作,如重启/启动/停止实例
  • 计划在办公时间之后停止实例并在办公时间内启动 – 目前,我有一个CloudWatch事件触发了实例的停止/启动

我应该探索哪些服务? 对于所有这些任务,我已经在1个AWS账户上成功实施了这些任务。

我已经使用AWS开发工具包来获取资源列表并对其执行操作。 但挑战是Lambda,我相信要做到这一点,我需要为所有帐户安装这些function和所有区域的所有CloudWatch警报? 有没有更好的办法?

AWS组织是否可以解决这个问题? 我的帐户目前是正常的AWS根帐户


我正在探索使用CloudFormation将这些Lambda函数部署到所有帐户和地区。 这是最有效的方法吗? 有更好的select吗? 有些地区不支持Lambda,所以这意味着我的追踪只适用于支持它的地区。

您可以尝试使用IAMangular色委托跨多个AWS账户的访问权限。 假设您有一个lambda函数,在办公时间之后或之中停止/启动EC2实例。 这意味着您可以在master帐户(您的1个AWS账户 )中部署lambda,并在其他managed帐户中调用AWS API。 在master帐户中,您已经部署了该function及其IAM master执行angular色。 此angular色允许该function承担在managed帐户中部署的另一个managedangular色,以调用相应的AWS API,例如boto3 ec2 client stop_instances或start_instances方法。 IAM managedangular色允许在managed账户中调用AWS API,并且该function可以使用该API。

下面是IAMangular色(AWS CloudFormation片段)的示例:

  "MasterRole": { "Type": "AWS::IAM::Role", "Properties": { "RoleName": "master_role", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "Policies": [ { "PolicyName": "master_assume_policy", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "*" ] } ] } }, ... 

  "AccountRole": { "Type": "AWS::IAM::Role", "Properties": { "RoleName": "managed_role", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ">>> ARN_OF_MASTER_ROLE <<<" }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "Policies": [ { "PolicyName": "managed_ec2_policy", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:StopInstances", "ec2:StartInstances", ... 

您还需要通过从lambda函数调用AssumeRole API切换到IAM managedangular色。 有一个很好的文档描述这个过程。 总之,您需要通过STS承担IAM managedangular色,这将返回您必要的凭据以调用API。

以下是一些可帮助您了解IAM跨账户授权的链接:

使用IAMangular色委托跨AWS账户的访问

创build一个委派权限的angular色

关于AWS组织,我认为它可以帮助您以更集中的方式managed客户账户。 您可以创buildSCP或服务控制策略,从而集中控制从managed帐户访问AWS服务的级别。 该策略指定用户和angular色可以在帐户中使用的服务和操作。 您还可以使用CloudFormation自动创buildAWS managed帐户,并根据需要进行configuration。 这可能包括创buildIAM用户,angular色,策略等。在AWS博客上有一篇关于它的好文章:

AWS Organizations – 针对多个AWS账户的基于策略的pipe理