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

如何为EC2实例关联IAM角色,无需手动配置AWS凭证运行Terraform?

解决方案:通过IAM角色让EC2实例自动获取AWS服务权限

当然可以!给EC2实例关联IAM角色完全能摆脱手动更新凭证文件的麻烦——这其实就是AWS推荐的最佳实践之一,既能提升安全性,又能减少重复操作。下面结合你用Terraform的场景,给出具体实现步骤:

1. 创建EC2专用的IAM角色

首先需要创建一个信任EC2服务的IAM角色,让EC2能自动承担这个角色获取权限:

  • 登录AWS控制台,进入IAM服务,选择「角色」>「创建角色」
  • 信任实体类型选「AWS服务」,接着选择「EC2」,点击「下一步」
  • 附加你的EC2实例需要的权限策略(比如需要访问S3就附加AmazonS3ReadOnlyAccess,或者自定义符合业务需求的策略)
  • 给角色起个清晰的名字(比如EC2-Sandbox-Access-Role),完成创建

如果用Terraform创建这个角色,示例代码如下:

resource "aws_iam_role" "ec2_sandbox_role" {
  name = "EC2-Sandbox-Access-Role"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Principal = {
          Service = "ec2.amazonaws.com"
        }
      }
    ]
  })
}

# 附加权限策略(这里以S3只读为例,可替换为实际需要的权限)
resource "aws_iam_role_policy_attachment" "s3_read_access" {
  role       = aws_iam_role.ec2_sandbox_role.name
  policy_arn = "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
}

2. 将IAM角色关联到EC2实例

分两种场景处理,覆盖你用Terraform部署和已有实例的需求:

场景一:用Terraform创建新EC2实例

在EC2实例的资源定义中,添加iam_instance_profile参数,关联对应实例配置文件(Terraform会自动创建该配置文件):

resource "aws_instance" "sandbox_instance" {
  ami           = "ami-xxxxxx" # 替换为你的实际AMI ID
  instance_type = "t2.micro"

  # 关联IAM角色对应的实例配置文件
  iam_instance_profile = aws_iam_instance_profile.ec2_sandbox_profile.name
}

# 创建实例配置文件(关联上面的IAM角色)
resource "aws_iam_instance_profile" "ec2_sandbox_profile" {
  name = "EC2-Sandbox-Profile"
  role = aws_iam_role.ec2_sandbox_role.name
}

这样每次运行Terraform脚本时,新实例都会自动关联角色,无需手动配置凭证。

场景二:给已运行的EC2实例附加角色

如果是已经存在的实例,直接在控制台操作即可:

  • 进入EC2控制台,选中目标实例,点击「操作」>「安全」>「修改IAM角色」
  • 选择之前创建的IAM角色并保存,不需要重启实例,几分钟内就能生效。

3. 验证权限是否生效

登录EC2实例后,不需要配置~/.aws/credentials文件,直接尝试调用AWS服务测试,比如:

# 若有S3权限,执行此命令验证
aws s3 ls

如果能正常返回结果,说明角色已经生效。

额外说明

  • EC2实例关联IAM角色后,AWS会自动在实例内部生成临时安全凭证,并且每6小时自动刷新一次,完全不需要手动干预。
  • 这种方式比手动配置凭证更安全:临时凭证有效期短,且不需要在实例中存储敏感密钥信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:21