我有一个AWS CodePipeline在terraform文件中进行了配置,就像这样:
resource {
name = "Cool Pipeline"
...
stage {
name = "Source"
...
action {
name = "Source"
...
configuration {
Owner = "Me"
Repo = "<git-repo-uri>"
Branch = develop
OAuthToken = "b3287d649a28374e9283c749cc283ad74"
}
}
}
lifecycle {
ignore_changes = "OAuthToken"
}
}
忽略该令牌的原因是,AWS API不会向terraform显示该令牌,而是使用aws codepipeline get-pipeline <name>
将其输出。"pipeline": {
"stages": {
"name": "Source",
"actions": {
"configuration": {
"OAuthToken": "****"
}
}
}
}
结果是,当我执行terraform plan
时,它显示希望更新该令牌,如下所示:
module.modulename.aws_codepipeline.codepipeline
stage.0.action.0.configuration.%: "3" => "4"
stage.0.action.0.configuration.OAuthToken: "" => "b3287d649a28374e9283c749cc283ad74"
我的问题是,如何使ignore_changes
生效?我尝试过以下方法但没有成功:
ignore_changes = ["OAuthToken"]
ignore_changes = ["oauthtoken"]
ignore_changes = ["stage.action.configuration.OAuthToken"]
我通过谷歌搜索找到的所有示例都只展示了如何在同一块级别上忽略。
(这个文本中的令牌是假的。)
ignore_changes
部分。 - ydaetskcoRGITHUB_TOKEN
系统环境来防止这种情况发生。我的意思是,出于安全考虑,AWS不会向你提供github token的值,那么terraform怎么知道该值是否已更改? - Wrenchlifecycle { ignore_changes = [ "app_settings.APPINSIGHTS_PROFILERFEATURE_VERSION" ] }
- gabe