Skip to content

当 AWS 服务状态改变时为其自动设置 Tag

Notifications You must be signed in to change notification settings

NageNalock/AWSAutoTag

Repository files navigation

AWSAutoTag

目的

当诸如 EC2、RDS、RedShift 等资源状态发生改变时(如新建,修改等),可为其自动打上 Tag,标明其被改变的信息。

本仓库中列举了部分常用资源的 Lambda 函数样例代码:

在资源被创建时为其打上形如 {Owner:资源创建者,Principad:事件 ID} 的 Tag

此外,在各个服务的独立代码目录中还记录了 CloudWatch 监测到的事件样例返回信息( Json 文件),作为修改代码逻辑时的参考信息。

原理

CloudTrail 中会记录大多数 API 操作,并标记为一个个事件,通过CloudWatch 可以通过设置规则来监听这些事件。

当事件发生时可以选择触发一个 Lambda 函数,依靠这个 Lambda 函数,我们可以针对这个事件执行各种操作。

注意

  1. 在创建 Lambda 函数时,保证 Lambda 函数的 角色(Role)同时拥有操作 Lambda 函数对应资源的权限。
  2. 大多数资源的 API 都可以在 AWS 文档 找到。但是,特别的,Lambda 在 CloudTrail 中记录的 API 名称与Lambda 文档中并不一致。在 Lambda 样例代码中给出了部分常用VPC API 名称。
  3. 向 S3 中上传文件在默认状态下不会被 CloudTrail 记录,需要手动开启,参考使用 AWS CloudTrail 数据事件为 S3 存储桶启用对象级别日志记录
  4. 若需对代码功能进行修改,建议先在各个服务的独立代码目录中阅读代码信息。

步骤及最佳实践

AWS EC2/EBS/Snapshot/AMI等资源自动打Tag方案

代码目录

  • AWSAutotagTotal

    整合后的代码文件,可在一份代码中为多个资源设置 Tag

独立代码目录
  • DynamoDBAutotag

    单独为 DynamoDB 设置 Tag 及 DynamoDB 在 CloudWatch 中监测到的事件信息

  • Lambda2Autotag

    单独为 Lambda 设置 Tag 及 Lambda 在 CloudWatch 中监测到的事件信息

  • RDSAutotag

    单独为 RDS 设置 Tag 及 RDS 在 CloudWatch 中监测到的事件信息

  • RedShiftAutotag

    单独为 RedShift 设置 Tag 及 RedShift 在 CloudWatch 中监测到的事件信息

  • S3AutotagVObject

    单独为 S3 设置 Tag 及 S3 在 CloudWatch 中监测到的事件信息。

    特别的,分为对 S3 的桶(bucket) 设置 Tag 以及对 S3 中的 对象(Object) 设置 Tag

  • SQSAutotag

    单独为 SQS 设置 Tag 及 SQS 在 CloudWatch 中监测到的事件信息

  • VPCAutotag

    单独为 VPC 设置 Tag 及 VPC 在 CloudWatch 中监测到的事件信息

Releases

No releases published

Packages

No packages published

Languages