You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform创建AWS MemoryDB用户时遇ServiceLinkedRoleNotFoundFault错误

解决MemoryDB创建用户时的ServiceLinkedRoleNotFoundFault错误

这个错误的核心原因是AWS MemoryDB需要专用的服务关联角色(Service-Linked Role)来完成用户创建等资源操作,而你的AWS账号中尚未生成该角色。以下是两种可行的解决方式:

方式一:手动创建服务关联角色

通过AWS控制台操作

  1. 进入IAM控制台的「角色」页面
  2. 点击「创建角色」,选择「AWS服务」作为可信实体类型
  3. 在服务列表中找到「MemoryDB」,按照页面指引完成角色创建(系统会自动使用默认名称AWSServiceRoleForMemoryDB)

通过AWS CLI操作

执行以下命令:

aws iam create-service-linked-role --aws-service-name memorydb.amazonaws.com

方式二:通过Terraform自动创建

在你的Terraform配置中添加服务关联角色资源,并让MemoryDB模块依赖该角色,确保角色先被创建:

# 创建MemoryDB所需的服务关联角色
resource "aws_iam_service_linked_role" "memorydb" {
  aws_service_name = "memorydb.amazonaws.com"
}

module "memory_db" {
  source = "terraform-aws-modules/memory-db/aws"

  # 保留你原有的所有配置...
  name        = "redis-${local.env_type}"
  description = "MemoryDB cluster"
  security_group_ids = [aws_security_group.redis_public_access.id]
  users = {
    admin = {
      user_name     = random_string.redis_user.result
      access_string = "on ~* &* +@all"
      passwords     = [random_password.redis_pwd.result]
    }
  }
  create_parameter_group = false
  create_subnet_group    = false
  subnet_ids             = my_subnets # 注意:这里如果my_subnets是子网ID列表,不需要加.id

  # 添加依赖,确保角色创建完成后再部署MemoryDB集群
  depends_on = [aws_iam_service_linked_role.memorydb]
}

额外注意事项

  • 执行上述操作的IAM身份(用户/角色)需要具备iam:CreateServiceLinkedRole权限,否则会触发权限不足错误
  • 服务关联角色创建后是全局生效的,同一个AWS账号只需创建一次

内容的提问来源于stack exchange,提问作者nolwww

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:19:01