我正在使用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
在谷歌搜索中,我发现一些文章告诉我这应该起作用,但是我似乎缺少了一些东西。任何帮助将不胜感激。 在此先感谢!
答案 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中具有适当的权限