代码之家  ›  专栏  ›  技术社区  ›  MLu

使Terraform忽略从服务返回的列表项的顺序

  •  0
  • MLu  · 技术社区  · 5 年前

    我正在创建一个AWS IAM策略,该策略将资源的访问权限授予多个远程帐户。我已经把这些账户列在了一个清单上——都很好。然而,当TF检查后续系统上的当前状态时 plan 它以不同的顺序返回,TF认为必须纠正。我怎么能忽略列表顺序?

    这是我的资源:

    resource "aws_ecr_repository_policy" "repo" {
      policy = jsonencode({
        Statement = [
          {
            Principal = {
              AWS = [ 
                  "arn:aws:iam::123456789012:root",
                  "arn:aws:iam::567890123456:root",
                  "arn:aws:iam::987654321098:root",
              ]
    ...
    

    接下来 terraform plan 跑步我得到了一些变化:

    ~ {
        ~ Principal = {
          ~ AWS = [
            + "arn:aws:iam::987654321098:root",    <<< swapped order
              "arn:aws:iam::123456789012:root",
              "arn:aws:iam::567890123456:root",
            - "arn:aws:iam::987654321098:root",    <<< and here
          ]
        }
    

    AWS的返回顺序是不可预测的,每次都会发生变化。我能无视命令吗?理想情况下不忽略整体 policy 使用生命周期/忽略更改进行阻止。

    0 回复  |  直到 5 年前
        1
  •  2
  •   Lorenzo Orsatti    4 年前

    这是terraform provider aws(目前开放)的一个问题,请参阅 https://github.com/hashicorp/terraform-provider-aws/issues/22274

    如果您愿意,您可以导航到那里,并按照描述投票支持它,以帮助社区和维护人员确定此请求的优先级。