Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在AWS PowerShell工具中使用Grant-EC2SecurityGroupIngress指定端口范围_Amazon Web Services_Aws Cli - Fatal编程技术网

Amazon web services 如何在AWS PowerShell工具中使用Grant-EC2SecurityGroupIngress指定端口范围

Amazon web services 如何在AWS PowerShell工具中使用Grant-EC2SecurityGroupIngress指定端口范围,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,我正在使用AWS Powershell工具和AWS CLI 我可以使用如下代码将入站规则添加到安全组: $IpRange = New-Object -TypeName Amazon.EC2.Model.IpRange $IpRange.CidrIp = "102.196.30.33/32" $IpRange.Description = "RDP" $IpPermission = New-Object Amazon.EC2.Model.IpPermission $IpPermission.IpPr

我正在使用AWS Powershell工具和AWS CLI

我可以使用如下代码将入站规则添加到安全组:

$IpRange = New-Object -TypeName Amazon.EC2.Model.IpRange
$IpRange.CidrIp = "102.196.30.33/32"
$IpRange.Description = "RDP"
$IpPermission = New-Object Amazon.EC2.Model.IpPermission
$IpPermission.IpProtocol = "tcp"
$IpPermission.FromPort = 2089
$IpPermission.ToPort = 2089
$IpPermission.Ipv4Ranges = $IpRange
Grant-EC2SecurityGroupIngress -GroupId sg-9773d0bb -IpPermission $IpPermission

# Verify inbound rule has been correctly added
aws ec2 describe-security-groups --group-ids sg-9773d0bb
但是,如果我尝试添加对Grant-EC2SecurityGroupIngress的第二个调用并指定端口范围,则第二个调用不起作用:

$IpRange.Description = "FTP PASV"
$IpPermission.FromPort = 2025
$IpPermission.ToPort = 2030
Grant-EC2SecurityGroupIngress -GroupId sg-9773d0bb -IpPermission $IpPermission

# Verify inbound rule has been correctly added
aws ec2 describe-security-groups --group-ids sg-9773d0bb
不会返回任何错误,但不会添加规则。为什么不呢

更新 有些人建议改为使用AWS CLI授权安全组入口规则,但是如果我向该规则添加说明,则会返回“无效JSON”错误消息:

通常情况下,类似这样的情况表示引号转义不正确会出现问题,但我不认为是这样。在这里,字符串周围有双引号,内部双引号使用反勾号或双引号转义:

如果您愿意坚持,这对我很有用:

aws ec2 authorize-security-group-ingress --group-id sg-xxx --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 2025, "ToPort": 2030, "IpRanges": [{"CidrIp": "102.196.30.33/32", "Description": "FTP PASV"}]}]'

如果你愿意坚持,这对我来说很有用:

aws ec2 authorize-security-group-ingress --group-id sg-xxx --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 2025, "ToPort": 2030, "IpRanges": [{"CidrIp": "102.196.30.33/32", "Description": "FTP PASV"}]}]'
答案分两部分:

第1部分:Grant-EC2安全组入口。 在内部,此命令正在修改$IpPermission。如果尝试将$IpRange.CidrIp更改为其他地址,则会看到错误:

Grant-EC2SecurityGroupIngress : Cannot set values for both Ipv4Ranges and IpRanges properties on
the IpPermission type which is part of the request. Consider using only Ipv4Ranges as IpRanges has
been marked obsolete.
解决方案是重新分配$IpPermission

$IpRange.CidrIp = "102.196.30.33/32"
$IpRange.Description = "FTP PASV"

$IpPermission = New-Object Amazon.EC2.Model.IpPermission
$IpPermission.IpProtocol = "tcp"
$IpPermission.FromPort = 2025
$IpPermission.ToPort = 2030
$IpPermission.Ipv4Ranges = $IpRange

Grant-EC2SecurityGroupIngress -GroupId $sg -IpPermission $IpPermission
第2部分:对于PowerShell(Windows)AWS CLI:您需要转义双引号,并用双引号将字符串括起来

以下是一个工作示例:

aws ec2授权安全组入口——组id sg-12345678——ip权限“[{“IpProtocol\”:“tcp\”,“FromPort\”:2025,““ToPort\”:2030,““IpRanges\”:[{“CidrIp\”:“102.196.30.33/32\,“Description\”:“FTP PASV\”}]”分两部分回答:

第1部分:Grant-EC2安全组入口。 在内部,此命令正在修改$IpPermission。如果尝试将$IpRange.CidrIp更改为其他地址,则会看到错误:

Grant-EC2SecurityGroupIngress : Cannot set values for both Ipv4Ranges and IpRanges properties on
the IpPermission type which is part of the request. Consider using only Ipv4Ranges as IpRanges has
been marked obsolete.
解决方案是重新分配$IpPermission

$IpRange.CidrIp = "102.196.30.33/32"
$IpRange.Description = "FTP PASV"

$IpPermission = New-Object Amazon.EC2.Model.IpPermission
$IpPermission.IpProtocol = "tcp"
$IpPermission.FromPort = 2025
$IpPermission.ToPort = 2030
$IpPermission.Ipv4Ranges = $IpRange

Grant-EC2SecurityGroupIngress -GroupId $sg -IpPermission $IpPermission
第2部分:对于PowerShell(Windows)AWS CLI:您需要转义双引号,并用双引号将字符串括起来

以下是一个工作示例:


aws ec2授权安全组入口——组id sg-12345678——ip权限“[{“IpProtocol\”:“tcp\”,“FromPort\”:2025,““ToPort\”:2030,““IpRanges\”:[{“CidrIp\”:“102.196.30.33/32\”,“Description\”:“FTP PASV\”}],

如果您愿意只使用PowerShell而不是PowerShell,您可以只使用:
aws ec2授权安全组入口--组名--协议tcp--端口3389--cidr
谢谢,不幸的是,我没有运气让授权安全组入口工作,同时还向规则添加了一个“说明”,这就是我切换到aws Powershell工具的原因。例如,以下命令应该可以工作,但错误地返回无效的JSON(JSON没有任何错误):
aws ec2授权安全组入口——组id“$SecurityGroupId”--ip权限“[{”IpProtocol:“tcp”,“FromPort”:2089,“ToPort”:2089,“IpRanges”:[{”CidrIp:“$UserIp/32”,“Description:“RDP(自定义)”}]“
如果您愿意只使用而不是PowerShell,您可以只使用:
aws ec2授权安全组入口--组名--协议tcp--端口3389--cidr
谢谢,不幸的是,我没有运气让授权安全组入口起作用,同时还向规则添加了一个“说明”,这就是我切换到AWS Powershell工具的原因。例如,以下命令应该可以工作,但错误地返回无效的JSON(JSON没有任何错误):
aws ec2授权安全组入口——组id“$SecurityGroupId”--ip权限“[{”IpProtocol:“tcp”,“FromPort”:2089,“ToPort”:2089,“IpRanges”:[{”CidrIp:“$UserIp/32”,“Description:“RDP(自定义)”}]“
谢谢您的帮助。不幸的是,我收到了一条与该命令完全相同的“无效JSON”错误消息。(我将为问题添加一个屏幕截图)。它在Mac上对我有效。我建议你在Windows上玩引号,让它开心。(尝试更改它们,排除它们,等等)谢谢,是的,这是我尝试过的,但没有成功(参见问题中的附加屏幕截图)。我非常确定字符串是正确转义的,并且是有效的JSON,因为我尝试将字符串回显到控制台,然后在JSON编辑器中打开结果,一切正常。我也找不到适用于Windows的语法。我注意到它使用了一个
$ip1
对象——我想知道这是否有用?谢谢您的帮助。不幸的是,我收到了一条与该命令完全相同的“无效JSON”错误消息。(我将为问题添加一个屏幕截图)。它在Mac上对我有效。我建议你在Windows上玩引号,让它开心。(尝试更改它们,排除它们,等等)谢谢,是的,这是我尝试过的,但没有成功(参见问题中的附加屏幕截图)。我非常确定字符串是正确转义的,并且是有效的JSON,因为我尝试将字符串回显到控制台,然后在JSON编辑器中打开结果,一切正常。我也找不到适用于Windows的语法。我注意到它使用了一个
$ip1
对象——我想知道这是否会有帮助?太棒了,这两种方法都有效。但是在第2部分中,我认为JSON字符串需要单引号,而不是双引号。令人困惑的是,我认为需要反斜杠转义的是AWS CLI,而不是Powershell(在Powershell中,转义是用反勾号而不是反斜杠完成的)。这两种方法都很好。但是在第2部分中,我认为JSON字符串需要单引号,而不是双引号。令人困惑的是,我认为需要反斜杠转义的是AWS CLI,而不是Powershell(在Powershell中,转义是使用反勾号而不是反斜杠完成的)。