我在Windows计算机上安装了AWS CLI,并且完全按照我的意愿运行此命令。“
aws ec2 describe-images
我得到以下输出,正是我想要看到的,因为尽管我可以通过公司访问AWS(例如,将代码检入CodeCommit),但可以在AWS Web控制台中看到EC2没有列出正在运行的实例的权限:
An error occurred (UnauthorizedOperation) when calling the DescribeImages operation: You are not authorized to perform this operation.
我也将terraform.exe放到了计算机上,并创建了一个包含以下内容的文件“ example.tf”:
provider "aws" {
region = "us-east-1"
}
我想发出某种会让我大吼的Terraform命令,解释说我的AWS账户不允许列出Amazon实例。
大多数 Hello World
示例涉及对terraform plan
使用resource
对AWS进行“几乎写入”。
但是,就个人而言,我对某些事情表现得比预期的要更加“真正的只读”,总是感到更加自在。这样,我确实知道到AWS的往返路程有效,但是我没有修改公司的任何状态。
互联网上有很多关于“数据源”及其“ aws_ami”或“ aws_instances”风格的信息,但是我找不到任何能真正告诉我如何使用的方法。。。。。用于简单print()
型交互的Terraform命令(显然,“资源”与“ terraform plan”和“ terraform apply”命令一起使用)。。 >
我可以使用Terraform命令来做一些事情来“列出世界”,以尝试列出我组织的所有EC2服务器,并因此看着AWS告诉我,因为我未经授权而蜂拥而至吗?
答案 0 :(得分:3)
您可以使用data source for AWS instances。您创建类似于以下内容的data
源:
data "aws_instances" "test" {
instance_tags = {
Role = "HardWorker"
}
filter {
name = "instance.group-id"
values = ["sg-12345678"]
}
instance_state_names = ["running", "stopped"]
}
这将尝试执行读取操作,列出由您放入配置中的过滤器指定的EC2实例。这还将利用与执行terraform plan
的Terraform用户关联的IAM。这将导致您描述的关于缺少授权的错误,这是您声明的目标。您应该修改filter
以定位组织的EC2实例。