AWS Prefix的定义是什么/在哪里?
在寻找列出S3端点CIDR的方法时,遇到了AWS前缀列表这个词,但不确定它的确切含义以及定义术语的位置。
前缀表示放在前面的单词。对于S3,根据Listing Keys Hierarchically Using a Prefix and Delimiter,它应该是对象的起始路径。
但是,显然它指的是IP地址范围。为什么IP范围使用前缀?历史或原因是什么?
这既可用于验证变量中给出的前缀列表,也可用于获取关联AWS服务的CIDR块(IP地址范围)。
以前缀列表格式描述可用的AWS服务,其中包括服务的前缀列表名称和前缀列表ID以及服务的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"
}
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前缀列表。
术语前缀列表来自路由技术。 CIDR格式的IP地址具有IP前缀和网络前缀(10.1.0.0/16)。 IP前缀为10.1,网络前缀为/ 16。
因此,如果您使用CIDR格式的IP地址列表,我们将其称为IP前缀列表。
如果你要找的是vpc endpoint
的前缀列表id,比如dynamodb / s3,那么它与IP或CIDR无关。正如文档中提到的那样:
创建出站安全组规则需要前缀列表ID,该规则允许来自VPC的流量通过网关VPC端点访问AWS服务。
因此,如果在ec2或vpc-lambda的安全组outbout中没有前缀列表id,则在连接到dynamodb
或s3
时会有时间。
您可以通过运行获取前缀列表
aws ec2 describe-prefix-lists
{
"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"
}
]
}
然后你可以通过aws web控制台将这个PrefixListId
放入你的安全组出站。如果您对不同的区域使用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"]
}