【问题标题】:AWS Cloudformation: Is it possible to access user id inside a Cloudformation template?AWS Cloudformation:是否可以访问 Cloudformation 模板中的用户 ID?
【发布时间】:2019-08-26 15:33:35
【问题描述】:

我想为使用该模板创建堆栈的用户自动标记在 CloudFormation 模板中定义的某些 AWS 资源。是否可以访问模板中的任何类型的用户 ID?

【问题讨论】:

  • AWS::AccountId 是否足够,或者您是否希望 IAM 用户执行堆栈创建?应该更新什么?
  • 我希望 IAM 用户执行创建。
  • 我很想知道是否有办法获取更新用户,但访问创建用户将是一个胜利。

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

我认为这是不可能的。

AWS 服务与 AWS 账户绑定。一旦 IAM 确认特定用户有权进行 API 调用,生成的资源就会与账户相关联,而不是与特定用户相关联。例如,无法查看 EC2 实例并确定是谁启动了该实例。

但是,AWS CloudTrail 中提供了此信息,但这更像是一个审核日志 - 它不会将用户信息提供回服务。

所以,我怀疑堆栈没有提供有关启动它的用户的信息。

【讨论】:

    【解决方案2】:

    有一种方法可以做到这一点,但它并不漂亮,并且有一个警告。

    您可以在 ec2 实例上运行如下所示的 bash 脚本:

    AWS_INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
    USER_ID=`aws sts get-caller-identity --output text --query 'Arn'`
    aws ec2 create-tags --resources "${AWS_INSTANCE_ID}" --tags 'Key=CreatedBy,Value="${USER_ID}"' --region eu-west-1
    

    这将使用在该实例上运行 CLI 的用户的名称标记当前实例。

    但需要注意的是,CLI 需要由用户运行 - 而不是角色,因此您的用户密钥必须复制到服务器 - 然后在脚本结束时再次删除。

    不理想,但它为您提供了一个选择。

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 2021-08-08
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2020-09-18
      • 2016-08-12
      • 1970-01-01
      • 2021-07-20
      相关资源
      最近更新 更多