Aws Authorize Security Group Rules in Command

建议点击 查看原文 查看最新内容。

原文链接: https://typonotes.com/posts/2024/09/13/aws-authorize-security-group-rules-in-command/

使用 aws cli 在线文档

aws 命令行工具的 help 不是很方便, 可以使用 Google 搜索在线文档

例如搜索

aws cli authorize-security-group-ingress

为 Security Group 增加规则

Security Group 的规则分为 入口(ingress) / 出口 (engress)

分别对应命令

1
2
authorize-security-group-ingress
authorize-security-group-engress

配置方式是一样的, 通常出口规则都是 0.0.0.0/0。 这里以入口规则为力。

2.1. 使用 cidr 简洁方式。

缺点: 配置结果没有注释。

1
ec2 authorize-security-group-ingress --group-id sg-id123123123  --protocol tcp --port 80 --cidr 2.2.2.2/32

2.2. IpPermission 扩展模式 + JSON

扩展模式是我的说法。 使用 JSON 提供更多信息, 可以在界面看到的效果更直观。

缺点也很明显, 为了提供更多信息, 需要更复杂的数据结构。 通常这部分会结合一些高级语言来生成内容。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
## from json string
${aws} ec2 authorize-security-group-ingress --cli-input-json '{
    "GroupId": "sg-id123123123",
    "IpPermissions": [
        {
            "IpProtocol": "tcp",
            "FromPort": 3389,
            "ToPort": 3389,
            "IpRanges": [
                {
                    "CidrIp": "1.1.1.1/32",
                    "Description": "RDP access from NY office"
                }
            ]
        }
    ]
}'

2.3. IpPermission 扩展模式 + JSON 文件

这种方法好得很, 好就好在可以配合高级语言对数据结构进行转换。

sgr-demo.json 中的内容就是上一节中的字符串内容。 与上一节命令相比, 使用了 file:// 关键字指定文件路径。

1
2
3
4
5
6
7
8
#!/bin/bash
#

## convert 
# go run . -i original.json > srg-demo.json

## from json file
aws ec2 authorize-security-group-ingress --group-id sg-id123123123 --cli-input-json file://sgr-demo.json