仅当参数不存在时才如何在AWS Parameter Store中创建/覆盖参数?

安奇

我正在使用terraform在AWS Parameter Store中创建参数。

resource "aws_ssm_parameter" "username" {
  name      = "username"
  type      = "SecureString"
  value     = "to_be_defined"
  overwrite = false
}

provider "aws" {
  version = "~> 1.53"
}

当我terraform apply第一次运行时,如果该参数不存在,terraform将创建该参数。但是,如果我再次运行它(通常使用不同的值),则会收到错误消息

ParameterAlreadyExists:参数已存在。要覆盖此值,请将请求中的overwrite选项设置为true

如果我正确理解,那是由于AWS Cli的行为(并非特定于提供程序)。

当前行为overwrite = false

如果该参数不存在,则创建它
如果该参数存在,则抛出异常

我想要实现的是

如果参数不存在,则创建它
如果参数存在,则不执行任何操作

我没有在AWS CLI文档中找到实现所需行为的方法。

我想知道是否有任何方法可以使用Terraform(或直接通过AWS CLI)实现所需的行为

宝马

我同意@ydaetskcoR,您也应该保持terraform状态的值。

但是,如果您坚持忽略存在SSM密钥的情况下要更新的值,则可以使用生命周期ignore_changeshttps://www.terraform.io/docs/configuration/resources.html#ignore_changes

因此,您可以将代码更新为

resource "aws_ssm_parameter" "username" {
  name      = "username"
  type      = "SecureString"
  value     = "to_be_defined"
  overwrite = false

  lifecycle {
    ignore_changes = [
      value,
  ]
}

覆盖-(可选)覆盖现有参数。如果未指定,则在未通过terraform创建资源以避免覆盖现有资源的情况下将默认设置为false,否则将默认为true(terraform lifecycle rules should then be used to manage the update behavior)。

顺便说一句,SecureString用terraform管理SSM密钥/值不是一个好的设计,因为它的tfstate文件未加密。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅当不存在参数时才在页面加载时向 url 添加参数

仅当HIVE中不存在分区时才如何插入覆盖分区?

仅当neo4j中不存在节点时,才如何创建节点?

在Persistent(Haskell)中,仅当记录不存在时才如何插入?

仅当使用MySQL的值不存在时才如何从表中插入值?

仅当 AWS Cloudformation 不存在时,如何通过 AWS Cloudformation 创建 AWS ECS 集群

仅当Firebase Firestore中不存在文档时才创建它

仅当文件不存在时,才在用户给定的路径中创建文件

仅当 C 中不存在时才创建 .dat 文件的函数?

在VBA(单词)中,仅当不存在任何注释时,才如何向范围添加注释?

仅当表中某处的特定列中的数据不存在时,才插入MySQL行

仅当表 B 中不存在特定值时才从表 A 中获取值

仅当 URL 中不存在 GET 变量时才调用脚本

仅当 oracle sql 中不存在值时才插入

仅当Vuex存储中的数据“过时”或不存在时才进行API调用

仅当列中不存在值时才尝试执行SQL命令

仅当行不存在时才将其追加到文件中

仅当 Google 数据存储中不存在密钥时才写入实体

仅当一个表中的数据不存在时才将其插入

仅当表中不存在该值时才更新SQL列

仅当特定列中不存在值时才更新表

ssisdb: set_object_parameter_value, 找不到参数,因为它不存在

仅当 JavaScript 不存在时,如何在一行中在窗口对象上创建嵌套属性?

仅当文件夹不存在时,如何在 pytest 和 run 方法中检查文件夹的创建?

参数验证失败:参数名称<some parameter>的参数值不存在。用户要求的回滚

如何使休眠状态仅在表不存在时才创建?

在Amazon Redshift中,如何仅在行不存在时才批量插入行?

仅当不存在时才创建新实例,否则返回现有而不进行新的初始化

仅当其他表中不存在数据时,SQL 才从该表中获取数据