使用 AWS MediaConvert 时,说明提供了示例 IAM 政策 https://docs.aws.amazon.com/mediaconvert/latest/ug/example-inline-policy-kms-decrypt-generatedatakey.html没有承担角色部分。同样,在 AWS IAM 控制台中创建默认 MediaConvert 角色时,生成的 IAM 角色也没有信任策略。
在 Terraform 中,我该如何创建 IAM 角色 https://www.terraform.io/docs/providers/aws/r/iam_role.html与一个空的assume_role_policy
争论?
我尝试了以下解决方案,但出现了各种错误:
- Set
assume_role_policy = ""
- Set
assume_role_policy = "{}"
- 创建一个空的
data aws_iam_policy_document
并将assume_role_policy设置为文档的json结果。
如果空的假设角色策略不是解决方案,那么如何使用适合 MediaConvert 的 terraform 创建 IAM 角色?
预先感谢您的考虑和回复。
您似乎对需要在何处定义假设角色策略感到困惑。策略本身不使用它,而是由角色使用它来确定允许哪些服务或帐户使用该角色。
该角色需要一个assume_role_policy
允许mediaconvert
服务能够承担这个角色。之后,角色可以使用附加到角色的策略(作为托管策略或内联策略)提供的任何权限。
您的假设角色策略应该如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "mediaconvert.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
用于创建角色和策略的 Terraform 代码将如下所示:
data "aws_iam_policy_document" "mediaconvert_assume_role_policy" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["mediaconvert.amazonaws.com"]
}
}
}
resource "aws_iam_role" "mediaconvert" {
name = "example"
path = "/system/"
assume_role_policy = data.aws_iam_policy_document.mediaconvert_assume_role_policy.json
}
resource "aws_iam_role_policy_attachment" "mediaconvert_s3" {
role = aws_iam_role.mediaconvert.name
policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess"
}
resource "aws_iam_role_policy_attachment" "mediaconvert_api_gateway" {
role = aws_iam_role.mediaconvert.name
policy_arn = "arn:aws:iam::aws:policy/AmazonAPIGatewayInvokeFullAccess"
}
这将创建一个可由 MediaConvert 服务承担的角色,然后允许 MediaConvert 服务能够使用 S3 或 API 网关执行任何操作。您可能想要选择向该角色授予更细粒度的权限,或者您可能会很高兴 MediaConvert 不会执行任何您不希望它执行的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)