AWS App Runner创建报错:实例角色假设失败问题求助
问题排查与解决
错误根源
你遇到的InvalidRequestException是因为App Runner实例角色的信任策略配置错误:
- 你为角色设置的信任主体是
build.apprunner.amazonaws.com,这是App Runner构建角色(用于镜像构建环节)的信任对象; - 而App Runner运行实例使用的角色(即
instance_configuration中指定的instance_role_arn),其信任主体必须是tasks.apprunner.amazonaws.com。
修正后的Terraform代码
IAM 角色部分(修正信任策略)
resource "aws_iam_role" "app_runner_instance" { name = "MyAppRunnerServiceRole" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Sid = "" Principal = { Service = "tasks.apprunner.amazonaws.com" # 修正为实例角色的信任主体 } }, ] }) } resource "aws_iam_role_policy_attachment" "app_runner_instance" { role = aws_iam_role.app_runner_instance.name policy_arn = "arn:aws:iam::aws:policy/service-role/AWSAppRunnerServicePolicyForECRAccess" }
App Runner 服务部分(关联修正后的角色)
resource "aws_apprunner_service" "main" { service_name = "sandbox-service" source_configuration { image_repository { image_configuration { port = "5000" } image_identifier = "${aws_ecr_repository.main.repository_url}:latest" image_repository_type = "ECR" } } instance_configuration { instance_role_arn = aws_iam_role.app_runner_instance.arn } }
额外说明
如果你的App Runner服务需要构建环节(比如从源码仓库构建镜像),还需要单独配置构建角色,其信任主体为build.apprunner.amazonaws.com,并关联对应的构建权限策略(如AWSAppRunnerBuildPolicyForECR)。但从你的配置来看,直接使用ECR镜像,无需构建角色,仅需修正实例角色的信任策略即可。
内容的提问来源于stack exchange,提问作者Evandro Pomatti
相关产品推荐
相关产品推荐

