amazon-web-services - 创建动态主体块 S3 IAM 策略
问题描述
我有一个 terraform 模块,它创建提供不同 S3 存储桶访问的策略资源。
特别是,可以使用变量自定义模块来更改存储桶、策略名称等。
# part of TF module
[...]
data "aws_iam_policy_document" "read_only" {
statement {
effect = "Allow"
actions = [
"s3:GetBucketAcl",
"s3:GetBucketLocation",
"s3:GetBucketPolicyStatus",
"s3:GetBucketPublicAccessBlock",
"s3:GetEncryptionConfiguration",
"s3:List*",
]
resources = [
"arn:aws:s3:::${var.s3_bucket_name}"
]
}
statement {
effect = "Allow"
actions = [
"s3:Get*",
]
resources = [
"arn:aws:s3:::${var.s3_bucket_name}${var.s3_bucket_prefix}/*"
]
}
statement {
effect = "Allow"
actions = [
"s3:GetAccountPublicAccessBlock",
]
resources = [
"*"
]
}
}
resource "aws_iam_policy" "read_only_policy" {
count = var.create_policy_resource ? 1 : 0
name = "${var.policy_name_prefix}ReadOnlyPolicy"
policy = data.aws_iam_policy_document.read_only.json
}
[...]
现在的问题是如何使用该principal
块为来自其他 AWS 账户的角色提供功能。
到目前为止,我还无法使用该dynamic
块使其工作,因为每个语句应该有一个且只有一个主体块,但前提是用于传递主体列表的变量不为空。
知道如何使用 Terraform 解决这种情况吗?
解决方案
推荐阅读
- node.js - BigML 连接到节点 JS
- bash - 在bash中的列中查找所选项目的平均值
- html - 为什么 safari 浏览器中没有安装 favicon?
- reactjs - React:如何将数据传递给“useDrop”函数?
- knex.js - 如何为某些模型的所有查询添加默认 where 子句?
- c++ - 我无法让我的代码输出到我的文本文件
- python - 保存外键django的值
- java - JAVA电子邮件跟踪像素跟踪阅读时间
- mongodb - 我可以将 mongodb atlas 数据移动到 aws ec2
- python - Python Concurrent.Futures ProcessPool Executor 错误输出