使用 powershell 按 TAG 值列出 AWS 实例

List of AWS instances by TAG value using powershell

我们正在标记我们的 AWS 实例,我想通过 TAG 引用检索我们所有实例(ELB、S3、EC2、安全组)的列表。例如,我们一直用这样的方式标记我们的资源: { "Key": "Project", "Value": "bananas" },

我们怎样才能获得能量-shell 我们所有包含 TAG 项目值 "bananas" 的资源的列表?

我能够使用以下脚本获取我所有的 EC2:

$instance = 获取 EC2Instance -Filter @( @{name='tag:Project'; values="bananas"}; @{name='instance-state-code'; values = 16} ) | Select-Object -ExpandProperty instances #获取实例 ID 忽略任何终止的实例 $实例 |导出 CSV "C:\ec2.csv"

但我不确定如何使用一个脚本获取我所有标记的资源。

查看 AWS Resource Groups Tagging API cmdlet——它们相对较新,因此您可能需要将适用于 PowerShell 的 AWS 工具更新到最新版本才能使用它们。

例子

下面的示例为标签 Key=Project、Value=Bananas 调用 Get-RGTResource,并过滤对检索到的所有 ResourceARN 的响应。 ResourceARN 是每个 AWS 资源的唯一标识符,您可以将其用作调用其他 AWS 服务的起点,以获取有关每个关联资源的更多详细信息。

(Get-RGTResource -TagFilter @{Key="Project"; Values = @("bananas")}).ResourceARN

示例输出

arn:aws:ec2:us-east-1:<accountid>:instance/i-abcd1234
arn:aws:ec2:us-west-2:<accountid>:vpc/vpc-abcd1234
arn:aws:ec2:us-east-2:<accountid>:security-group/sg-abcd1234
arn:aws:elasticloadbalancing:us-east-1:<accountid>:loadbalancer/abcd1234
arn:aws:elasticmapreduce:us-east-1:<accountid>:cluster/abcd1234

进一步阅读