You can query the ip-ranges Amazon AWS URL, and parse the results through jq as follows:

Generic S3 IP Ranges

Query:

1
curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="S3")'

Response:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "ip_prefix": "3.5.140.0/22",
  "region": "ap-northeast-2",
  "service": "S3",
  "network_border_group": "ap-northeast-2"
}
{
  "ip_prefix": "52.219.170.0/23",
  "region": "eu-central-1",
  "service": "S3",
<truncated>

Region Specific S3 IP Ranges

Query:

1
curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="eu-west-1") | select(.service=="S3") | .ip_prefix'

Response:

1
2
3
4
5
6
7
8
18.34.32.0/20
3.5.72.0/23
52.218.0.0/17
3.5.64.0/21
52.92.0.0/17
18.34.240.0/22
3.251.110.208/28
3.251.110.224/28