Вы, похоже, не понимаете, где должна быть определена политика предполагаемой роли. Это не используется самими политиками, а используется ролью, чтобы определить, каким службам или учетным записям разрешено использовать эту роль.
Роль нуждается в 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 Gateway. Возможно, вы захотите выбрать более детализированные разрешения для роли, или вы можете быть просто счастливы, что MediaConvert не собирается делать то, чего вы не хотите, в любом случае.