aws_iam_policy 和 aws_iam_role_policy 之间的区别

2023-12-29

我有一个aws_iam_role我想添加一个策略。通常,我会创建一个策略aws_iam_role并将其附加到角色上aws_iam_role_policy_attachment.

但是,我看过一些使用的文档aws_iam_role_policy在我看来,这似乎做了同样的事情。

我是正确的还是我错过了细微的差别?


区别在于托管策略和内联策略 https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html

当您创建一个aws_iam_policy,这是一个托管策略,可以重复使用。

当您创建一个aws_iam_role_policy这是一个内联策略

对于给定的角色,aws_iam_role_policy https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy资源与使用不兼容aws_iam_role资源inline_policy争论。当使用该参数和该资源时,两者都将尝试管理角色的内联策略,并且 Terraform 将显示永久差异。

重现上述状态的代码

resource "aws_iam_role_policy" "test_policy" {
  name = "test_policy"
  role = aws_iam_role.test_role.id

  # Terraform's "jsonencode" function converts a
  # Terraform expression result to valid JSON syntax.
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

resource "aws_iam_role" "test_role" {
  name = "test_role"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Sid    = ""
        Principal = {
          Service = "ec2.amazonaws.com"
        }
      },
    ]
  })
}
resource "aws_iam_role" "role" {
  name = "test-role1"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}

resource "aws_iam_policy" "policy" {
  name        = "test-policy"
  description = "A test policy"

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
EOF
}
resource "aws_iam_role_policy_attachment" "test-attach" {
  role       = aws_iam_role.role.name
  policy_arn = aws_iam_policy.policy.arn
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aws_iam_policy 和 aws_iam_role_policy 之间的区别 的相关文章

随机推荐

  • $setIsSubset 用于 Mongo 中的常规查询

    我想做相当于 setIsSubset http docs mongodb org manual reference operator aggregation setIsSubset http docs mongodb org manual
  • 混合模板函数重载和继承

    打印以下代码 generic overload 但我想要的是在这两种情况下都调用重载或专业化 而不是通用的 我并不是想将重载与模板专业化混合在一起 它们在一起是因为没有一个按我的预期工作 有什么模板魔法可以实现这一点吗 include
  • 当我使用 Validator.TryValidateObject 时验证不起作用

    DataAnnotations 不适用于好友类 以下代码始终验证 true 为什么 var isValid Validator TryValidateObject new Customer Context results true 这是好友
  • 添加自定义 DLL 搜索路径@应用程序启动

    我正在绞尽脑汁试图想出一个优雅的解决方案来解决 DLL 加载问题 我有一个应用程序静态链接到加载 DLL 的其他 lib 文件 我没有直接加载 DLL 我希望在可执行文件所在的文件夹之外的另一个文件夹中拥有一些 DLL 例如 working
  • RabbitMQ:快速生产者和慢速消费者

    我有一个应用程序 它使用 RabbitMQ 作为消息队列在两个组件 发送者和接收者 之间发送 接收消息 发送者以非常快的方式发送消息 接收方收到消息后会做一些非常耗时的工作 主要是数据量非常大的数据库写入 由于接收方需要很长时间才能完成任务
  • 方法 JPQL 的查询验证失败

    我正在实现一个查询 该查询返回自定义对象中的输出 通过我的实现 我收到一个错误 方法公共抽象java util List org degs repository ConsolidateresponseRepository transacti
  • 可与类型索引中的和和积合并

    Haskell 中是否有类似于以下类型类的内容 class Mergeable f Type gt Type gt Type where merge f a b gt f c d gt f a c Either b d 特别是 想象有一个S
  • 在使用 VBA 填充列表的 Excel 中输入下拉列表时自动完成

    我正在使用下面的代码将数据从另一张表插入到下拉列表中 当用户从另一个下拉列表中选择某个选项时 即可实现这一点 lstRow Sheets Data Sheet Range D Rows Count End xlUp Row Sheets D
  • 如何使用 grep 查找单词列表

    我有一个文件 A 其中有 100 个单词 并用换行符分隔 我想搜索文件 B 以查看文件 A 中的任何单词是否出现在其中 我尝试了以下方法 但对我不起作用 grep F A B 您需要使用该选项 f grep f A B 选项 F进行固定字符
  • Protractor - 当 DOM 元素更改时,页面对象不会更新

    我正在测试使用 angular js 构建的 SPA 并使用页面对象模式来编写我的测试 在应用程序中 我们有许多将要更新的列表 例如 有一个附件列表 当添加 删除附件时 该列表将会更新 要添加附件 我们有一个模式窗口 当我们上传文件并单击
  • Python/Matplotlib - 调整绘图边缘与 x 轴之间的间距

    如何调整 x 轴和绘图窗口边缘之间的间距 我的 x 轴标签是垂直方向的 它们超出了 Matplotlib 绘制的窗口的边缘 这是一些示例代码 import matplotlib pyplot as plt x 1 2 3 4 5 y 1 2
  • GStreamer 插件搜索路径?

    我可以以某种方式告诉 GStreamer 在指定目录中查找插件吗 Use the GST PLUGIN PATH环境变量指向您想要的目录 或者以编程方式调用 GstRegistry registry registry gst registr
  • Oracle 使用代理模式创建数据库链接

    所以我想在 oracle 中创建一个数据库链接 我的用户名是 jefferson 我想通过 opms 连接 所以我被告知这样做 create database link tmpp connect to jefferson opms iden
  • 使用 PHP 在菜单项上设置活动类

    我有一个简单的菜单 ul li 元素和一个class active 来标记当前页面 一个变量被传递 get 通过 url 选择特定页面 pg PAGE 我对 php 相当陌生 仍在学习中 这工作得很好 但我觉得应该有一个更简单 更短的方法
  • 在 Javascript 中反转数字而不使其成为字符串[重复]

    这个问题在这里已经有答案了 谁能告诉我我的代码哪里出错了 我正在尝试反转数字而不将其更改为字符串 我一直在搜索谷歌并浏览了之前提出的有关该主题的问题 从我可以看到我的代码反映了其他答案 我只能找到不使用 to string 方法的 Java
  • Android中如何声明全局变量?

    我正在创建一个需要登录的应用程序 我创建了主要活动和登录活动 在主要活动中onCreate方法我添加了以下条件 public void onCreate Bundle savedInstanceState super onCreate sa
  • 使用反射获取属性的字符串名称

    有大量的反射示例可以让您获得 一个类中的所有属性 单个属性 前提是您知道字符串名称 有没有一种方法 使用反射 TypeDescriptor 或其他方式 在运行时获取类中属性的字符串名称 前提是我拥有 的只是类和属性的实例 我有一个类的实例
  • 如何将数据推送到 iPhone 应用程序?

    我是 iPhone 应用程序开发新手 我无法弄清楚如何将数据推送到应用程序 具体来说 我试图找到一种方法将新数据 用户帖子 从服务器推送到应用程序 而无需用户刷新 下拉刷新 有可能吗 有一个接近的解决方案 使用Apple推送通知服务 它允许
  • 连接字符串无法按预期工作[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我知道这是一个常见问题 但在寻找参考
  • aws_iam_policy 和 aws_iam_role_policy 之间的区别

    我有一个aws iam role我想添加一个策略 通常 我会创建一个策略aws iam role并将其附加到角色上aws iam role policy attachment 但是 我看过一些使用的文档aws iam role policy