首页 > 解决方案 > Powershell AWS 创建一个分配前缀列表的安全组

问题描述

我试图在powershell中找到一种方法来创建前缀列表和安全组并将前缀列表附加到安全组但遇到类型错误并且不完全确定我将如何传递前缀列表。

创建前缀列表。

$Prefix = New-EC2ManagedPrefixList -PrefixListName "PrefixListTest1" -AddressFamily IPV4 -MaxEntry 2 -Entry @{cidr='10.0.0.0/27'}

然后尝试创建一个 SG 并将该前缀列表分配给它。

    $NewGroup = @{
        GroupName   = ""PrefixList-SG"
        Description = "PrefixList-SG"
        VpcId       = $vpc.id
        Force       = $true
        Region      = $vpc.region
    }
    $newGroup = New-EC2SecurityGroup @NewGroup
    Grant-EC2SecurityGroupIngress -GroupId  $newGroup -IpPermission @{IpProtocol = "udp" ; FromPort = "138"   ; ToPort = "138"  ; PrefixListIds= $Prefix } 

但这样做时我收到错误“Grant-EC2SecurityGroupIngress:无法绑定参数'IpPermission'。无法创建“Amazon.EC2.Model.IpPermission”类型的对象。无法转换“系统”类型的“pl-aaeebbccdd990”值.String" 以键入 "Amazon.EC2.Model.PrefixListId"。"

据我所知,grant-EC2SecurityGroupIngress 参数“-IpPermission <IpPermission[]>”接受 PrefixListIds,但这似乎不允许来自刚刚创建的前缀列表 ID?

标签: amazon-web-servicespowershellamazon-ec2

解决方案


能够通过使用以下方法创建前缀列表来完成此操作:

$managedPrefixList        = New-EC2ManagedPrefixList -PrefixListName "PrefixListTest1" -AddressFamily IPV4 -MaxEntry 2 -Entry @{cidr = "10.0.0.0/27" }
$prefixListId             = [Amazon.EC2.Model.PrefixListId]::new()
$prefixListId.Description = $managedPrefixList.PrefixListName
$prefixListId.Id          = $managedPrefixList.PrefixListId

然后我像这样传入前缀列表:

Grant-EC2SecurityGroupIngress -GroupId  $newGroup -IpPermission @{ IpProtocol = "udp"; FromPort = "138"; ToPort = "138"; PrefixListIds = $prefixListId }

推荐阅读