Python 3.x 在AWS Ubuntu EC2实例中使用Python进行IP交换

Python 3.x 在AWS Ubuntu EC2实例中使用Python进行IP交换,python-3.x,amazon-web-services,ubuntu,amazon-ec2,python-requests,Python 3.x,Amazon Web Services,Ubuntu,Amazon Ec2,Python Requests,实际上,我有一些辅助私有IP,连接到我的ec2实例,每个都与一个公共弹性IP相关联。我有一段python代码,可以使用python请求执行一些API请求。在发送每个请求之前,我需要从已附加的IP列表中设置自定义源IP 尝试了以下代码,但以错误结束: import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('X.X.X.X', 20)) 提前感谢弹性IP地址存在于1:1 NAT后面,因此您

实际上,我有一些辅助私有IP,连接到我的ec2实例,每个都与一个公共弹性IP相关联。我有一段python代码,可以使用
python请求
执行一些API请求。在发送每个请求之前,我需要从已附加的IP列表中设置自定义源IP

尝试了以下代码,但以错误结束:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('X.X.X.X', 20))

提前感谢

弹性IP地址存在于1:1 NAT后面,因此您需要绑定实例后面的本地IP地址。您可以要求元数据存储获取每个网络适配器的公共/本地IP地址

大多数情况下,这样做非常简单:

import requests
import socket

metadata = "http://169.254.169.254/latest/meta-data/network/interfaces/macs/"

for mac_id in requests.get(metadata).text.split("\n"):
    local_ip = requests.get(metadata + mac_id + "local-ipv4s").text
    public_ip = requests.get(metadata + mac_id + "public-ipv4s").text
    print("{} has local IP of {} and public IP of {}".format(mac_id, local_ip, public_ip))

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind((local_ip, 1234))

弹性IP地址存在于1:1 NAT后面,因此需要绑定实例后面的本地IP地址。您可以要求元数据存储获取每个网络适配器的公共/本地IP地址

大多数情况下,这样做非常简单:

import requests
import socket

metadata = "http://169.254.169.254/latest/meta-data/network/interfaces/macs/"

for mac_id in requests.get(metadata).text.split("\n"):
    local_ip = requests.get(metadata + mac_id + "local-ipv4s").text
    public_ip = requests.get(metadata + mac_id + "public-ipv4s").text
    print("{} has local IP of {} and public IP of {}".format(mac_id, local_ip, public_ip))

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind((local_ip, 1234))

您收到了什么错误消息?您收到了什么错误消息?