用于将现有 AWS 资源列为 Hello World 的 Terraform 命令
Terraform command to list existing AWS resources as a Hello World
我的 Windows 计算机上安装了 AWS CLI,运行 这个命令 "works" 完全符合我的要求。
aws ec2 describe-images
我得到以下输出,这正是我想要看到的,因为虽然我可以通过我的公司访问 AWS(例如,将代码签入 CodeCommit),但我可以在 EC2 的 AWS Web 控制台中看到我无权列出 运行 个实例:
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 执行 "almost-write"。
然而,就个人而言,我总是觉得知道事情按预期表现得更舒服一些 "truly read-only." 这样,我真的 知道 轮- AWS 之旅成功了,但我没有修改我公司的任何状态。
互联网上有很多关于 "data sources" 及其 "aws_ami" 或 "aws_instances" 口味的内容,但我找不到任何告诉我如何真正 将与Terraform命令一起使用,以进行简单的print()
类型的交互(很明显,比方说,"resources"与"terraform plan" 和 "terraform apply" 命令).
我可以使用 Terraform 命令做些什么来 "hello world" 尝试列出我组织的所有 EC2 服务器,并相应地看到 AWS 告诉我因为我未获得授权而停止工作?
您可以使用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 实例。
我的 Windows 计算机上安装了 AWS CLI,运行 这个命令 "works" 完全符合我的要求。
aws ec2 describe-images
我得到以下输出,这正是我想要看到的,因为虽然我可以通过我的公司访问 AWS(例如,将代码签入 CodeCommit),但我可以在 EC2 的 AWS Web 控制台中看到我无权列出 运行 个实例:
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 执行 "almost-write"。
然而,就个人而言,我总是觉得知道事情按预期表现得更舒服一些 "truly read-only." 这样,我真的 知道 轮- AWS 之旅成功了,但我没有修改我公司的任何状态。
互联网上有很多关于 "data sources" 及其 "aws_ami" 或 "aws_instances" 口味的内容,但我找不到任何告诉我如何真正 将与Terraform命令一起使用,以进行简单的print()
类型的交互(很明显,比方说,"resources"与"terraform plan" 和 "terraform apply" 命令).
我可以使用 Terraform 命令做些什么来 "hello world" 尝试列出我组织的所有 EC2 服务器,并相应地看到 AWS 告诉我因为我未获得授权而停止工作?
您可以使用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 实例。