代码之家  ›  专栏  ›  技术社区  ›  mon

AWS前缀实际上是什么?

  •  4
  • mon  · 技术社区  · 6 年前

    问题

    AWS前缀的定义是什么/在哪里?

    背景

    在寻找列出S3端点CIDR的方法时,遇到了单词aws 前缀列表 但不确定它的确切含义和术语的定义。

    混乱

    前缀 指放在前面的词。对于S3,根据 Listing Keys Hierarchically Using a Prefix and Delimiter 它应该是对象的起始路径。

    但是,显然它指的是IP地址范围。怎么会 前缀 是否用于IP范围?历史或原因是什么?

    Terraform aws_prefix_list

    这既可用于验证变量中给定的前缀列表,也可用于获取相关AWS服务的CIDR块(IP地址范围)。

    describe-prefix-lists

    以前缀列表格式描述可用的AWS服务,其中包括服务的前缀列表名称和前缀列表ID以及服务的IP地址范围。

    AWS IP Address Ranges

    SERVICE="S3"
    REGION="us-west-1"
    $ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \
      jq -r --arg SERVICE "$SERVICE" --arg REGION "${REGION}" '.prefixes[] \
       | select(.service==$SERVICE and .region==$REGION)'
    
    {
      "ip_prefix": "52.92.48.0/22",
      "region": "us-west-1",
      "service": "S3"
    }
    {
      "ip_prefix": "54.231.232.0/21",
      "region": "us-west-1",
      "service": "S3"
    }
    {
      "ip_prefix": "52.219.20.0/22",
      "region": "us-west-1",
      "service": "S3"
    }
    {
      "ip_prefix": "52.219.24.0/21",
      "region": "us-west-1",
      "service": "S3"
    }
    

    更新

    what is the meaning of Prefix ?

    假设您有一个类似10.5.10.0/24的网络 因此,该子网中的前缀是10.5.10,从1到255,网络地址是10.5.10.0。

    我想(10.0.0.0/24)意味着(32位IP的前24位部分),具有 254个IP地址从1到254(0是网络,255是广播)。前缀是前24位和后缀(?)是最后8位。识别网络的前n位列表是IP前缀列表。

    2 回复  |  直到 5 年前
        1
  •  3
  •   John Hanley    6 年前

    术语前缀列表来自路由技术。CIDR格式的IP地址具有IP前缀和网络前缀(10.1.0.0/16)。IP前缀为10.1,网络前缀为/16。

    因此,如果您使用的是CIDR格式的IP地址列表,我们称之为IP前缀列表。

        2
  •  0
  •   LeOn - Han Li    5 年前

    如果您要查找的是前缀列表ID vpc endpoint 与dynamodb/s3一样,它与IP或CIDR无关。如文件所述:

    创建出站安全组规则需要前缀列表ID,该规则允许来自VPC的流量通过网关VPC端点访问AWS服务。

    因此,如果在ec2或vpc lambda的安全组发件中没有前缀列表ID,您将得到 时间到 连接到时 dynamodb s3 .

    您可以通过运行来获取前缀列表

    AWS EC2描述前缀列表

    {
        "PrefixLists": [
            {
                "Cidrs": [
                    "54.231.0.0/17",
                    "52.216.0.0/15"
                ],
                "PrefixListId": "pl-63c5400k",
                "PrefixListName": "com.amazonaws.us-east-1.s3"
            },
            {
                "Cidrs": [
                    "52.94.0.0/22",
                    "52.119.224.0/20"
                ],
                "PrefixListId": "pl-02ad2a6c",
                "PrefixListName": "com.amazonaws.us-east-1.dynamodb"
            }
        ]
    }
    

    然后你可以把这个 PrefixListId 通过AWS Web控制台输出到安全组中。如果您在不同的区域使用地形,它可能类似于:

    resource "aws_security_group_rule" "MyService_to_DynamoDB_east" {
      count = "${ lower(var.region) == "us-east-1" ? 1 : 0 }"
    
      security_group_id = "${aws_security_group.MyService_Ext_Api.id}"
      description       = "DynamoDB"
      type              = "egress"
      protocol          = "tcp"
      from_port         = 443
      to_port           = 443
      prefix_list_ids    = ["pl-02ad2a6c"]
    }
    
    resource "aws_security_group_rule" "MyService_to_DynamoDB_west" {
      count = "${ lower(var.region) == "us-west-2" ? 1 : 0 }"
    
      security_group_id = "${aws_security_group.MyService_Ext_Api.id}"
      description       = "DynamoDB"
      type              = "egress"
      protocol          = "tcp"
      from_port         = 443
      to_port           = 443
      prefix_list_ids    = ["pl-0ca54061"]
    }