ec2实例使用terraform的IAM角色创建失败

时间:2019-05-01 15:12:17

标签: amazon-ec2 terraform amazon-iam

我正在使用terraform通过IAM配置文件创建EC2实例。设置了所有适当的角色和策略后,我仍然遇到错误:

  

未经授权的操作:您无权执行此操作。状态码:403

这是我的main.tf:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "aws_test" {
  ami = "ami-image"
  instance_type = "t2.micro"
  iam_instance_profile = "test-role"
}

这是我的aws政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:*"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:InstanceType": [
                        "t2.micro"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*"
        }
    ]
}

这是我在main.tf中使用的角色的证明

  

arn:aws:iam ::: role / test-role

在谷歌搜索中,我发现一些文章告诉我这应该起作用,但是我似乎缺少了一些东西。任何帮助将不胜感激。 在此先感谢!

2 个答案:

答案 0 :(得分:1)

  

更新:我是通过直接在ec2机器上安装terraform来运行此程序的,不确定是否会引起问题

在EC2实例中运行Terraform而不提供特定凭据将potentially use the Metadata API to retrieve credential

您可以检查是否可以在实例内部调用Metadata API。

答案 1 :(得分:-1)

UnauthorizedOperation意味着运行terraform的用户或角色无权创建aws_instance

确保运行terraform的用户或角色在AWS IAM中具有适当的权限