
bridgecrew/yorYor是一个开源工具,旨在为基础设施即代码(IaC)框架添加信息丰富且一致的标签。目前支持Terraform、CloudFormation和Serverless框架,可自动为IaC资源块添加标签。Yor可作为GitHub Action自动应用标签逻辑,也可作为pre-commit钩子或独立CLI工具运行,帮助团队实现云资源与IaC代码的关联追踪及变更管理。
yor_trace标签实现IaC资源块与运行中的云资源之间的简单关联。bashdocker pull bridgecrew/yor
在本地IaC目录上运行Yor添加标签:
bashdocker run --tty --volume /local/path/to/tf:/tf bridgecrew/yor tag --directory /tf
说明:
--volume /local/path/to/tf:/tf将本地IaC目录挂载到容器内的/tf路径,tag --directory /tf指定对该目录下的IaC文件应用标签。
tag命令(核心标签功能)bash# 对terraform目录树应用所有标签(递归) docker run --tty -v /local/tf:/tf bridgecrew/yor tag --directory /tf # 对terraform目录应用标签,不递归子目录 docker run --tty -v /local/tf:/tf bridgecrew/yor tag --directory /tf --non-recursive # 仅应用指定标签(git_file和git_org) docker run --tty -v /local/tf:/tf bridgecrew/yor tag --directory /tf --tags git_file,git_org # 排除指定标签(以git开头和yor_trace标签) docker run --tty -v /local/tf:/tf bridgecrew/yor tag --directory /tf --skip-tags git*,yor_trace # 仅应用git标签组下的所有标签 docker run --tty -v /local/tf:/tf bridgecrew/yor tag --tag-groups git --directory /tf # 应用自定义键值对标签(需设置环境变量) docker run --tty -e YOR_SIMPLE_TAGS='{ "Environment" : "Dev" }' -v /local/tf/dev:/tf bridgecrew/yor tag --tag-groups simple --directory /tf # Dry-Run模式(预览标签变更,不实际修改文件) docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf --dry-run # 使用外部标签组配置文件 docker run --tty -v /local/config:/config -v /local/tf:/tf bridgecrew/yor tag -d /tf --config-file /config/custom_tags.yaml # 排除特定类型的资源(如aws_s3_bucket) docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf --skip-resource-types aws_s3_bucket # 为标签添加前缀 docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf --tag-prefix "module_" # 排除指定名称的资源 docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf --skip-resources aws_s3_bucket.operations # 仅对指定框架应用标签 docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf --parsers Terraform,CloudFormation
bash# 默认CLI输出 docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf -o cli # JSON格式输出 docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf -o json # 同时输出CLI和JSON文件(便于程序分析+人工阅读) docker run --tty -v /local/tf:/tf bridgecrew/yor tag -d /tf --output cli --output-json-file /tf/result.json
bash# 对path/to/files应用标签,跳过指定子目录 docker run --tty -v /local/path/to/files:/tf bridgecrew/yor tag -d /tf --skip-dirs /tf/skip,/tf/another/skip2
bash# 列出内置标签组 docker run --tty bridgecrew/yor list-tag-groups # 列出所有内置标签 docker run --tty bridgecrew/yor list-tags # 列出git标签组下的所有标签 docker run --tty bridgecrew/yor list-tags --tag-groups git
通过特定注释可排除资源或文件被标签化,目前支持Terraform和CloudFormation文件:
hcl# Terraform示例 #yor:Skip resource "aws_instance" "example_instance" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" } # CloudFormation示例 #yor:skip ExampleInt: Type: AWS::Lambda::Function Properties: Description: An example template
hcl# Terraform示例 #yor:skipAll resource "aws_vpc" "example_vpc" { cidr_block = "10.0.0.0/16" } # CloudFormation示例 #yor:skipAll Resources: NewVolume: Type: AWS::EC2::Volume Properties: Size: 100
yor_trace是一个特殊标签,为IaC资源代码块创建唯一标识符。通过该标签,无需访问敏感的plan或state文件,即可将云资源与对应的IaC代码块关联,实现从云资源到代码的追踪。
bashbrew tap bridgecrewio/tap brew install bridgecrewio/tap/yor
bashchoco install yor
yamlname: IaC trace on: [push, pull_request] jobs: yor: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Run yor action uses: bridgecrewio/yor-action@main
golangci-lint run --fix --skip-dirs tests/yor_plugins确保代码规范



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务