实际上,什么是AWS Prefix?

mon*_*mon 8 prefix amazon-web-services

AWS Prefix的定义在哪里?

背景

在寻找列出S3端点CIDR的方法时,遇到了AWS 前缀列表一词,但不确定其确切含义以及定义的术语。

混乱

前缀是指放在前面的单词。对于S3,根据“ 使用前缀和分隔符分层列出密钥”,它应该是对象的起始路径。

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

地形aws_prefix_list

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

描述前缀列表

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

AWS IP地址范围

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"
}
Run Code Online (Sandbox Code Playgroud)

更新资料

前缀是什么意思?

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

我假设(10.0.0.0/24)表示具有254个IP地址(从1到254)的网络(32位IP的前24位部分)(0是网络,而255是广播)。前缀是前24位,后缀(?)是后8位。标识网络的高N位列表是IP前缀列表。

LeO*_* Li 8

如果您要查找的是vpc endpoint诸如 dynamodb/s3 之类的前缀列表 ID ,那么它与 IP 或 CIDR 无关。正如文档中提到的:

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

因此,如果在 ec2 或 vpc-lambda 的安全组输出中没有前缀列表 ID,则连接到或时将超时dynamodbs3

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

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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以PrefixListId通过 aws Web 控制台将其放入您的安全组出站。如果您对不同区域使用 terraform,则可能类似于:

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"]
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ley 7

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

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

  • 如果它采用“192.168.0.0/16”这种格式,则它是一个前缀列表。“192.168”是本例中的 IP 前缀。另一个例子,“192.168.10.14/32”。IP 前缀是“192.168.10.14”。一开始看起来很奇怪,但你很快就会学会阅读它们而无需真正考虑它。 (2认同)