저는 AWS Lambda를 사용하고 있습니다. 지금까지 /etc/hosts를 편집했지만 Lambda에서는 편집할 수 없습니다.
Google에 핑을 보내는 스크립트가 있습니다. 그것은 다음과 같습니다:
import subprocess
def aws_handler(a, b):
ipaddress = 'google.com' # guess who
proc = subprocess.Popen(['/usr/bin/ping', '-c', '3', ipaddress],
stdout=subprocess.PIPE)
stdout, stderr = proc.communicate()
print(stdout, stderr)
내 Dockerfile은 다음과 같습니다.
FROM public.ecr.aws/lambda/python:3.8 as lambda-base
COPY ./ ./
RUN yum install -y iputils dnsmasq
RUN echo "nameserver 127.0.0.1" > /etc/resolv.conf
RUN cat /etc/resolv.conf
RUN echo "address=/com/127.0.0.1" >> /etc/dnsmasq.conf
RUN cat /etc/dnsmasq.conf
FROM lambda-base
CMD [ "app.aws_handler" ]
내가 실행하면 다음과 같은 결과가 나타납니다.
(142.250.187.238): icmp_seq=1 ttl=127 time=68.3 ms\n64 bytes from lhr25s34-in-f14.1e100.net
(142.250.187.238): icmp_seq=2 ttl=127 time=67.6 ms\n64 bytes from lhr25s34-in-f14.1e100.net
(142.250.187.238): icmp_seq=3 ttl=127 time=...
핑이 127.0.0.1이 될 것으로 예상하면. 예상대로 작동하지 않는 이유는 무엇입니까?
답변1
두 줄이 있어요/etc/dnsmasq.conf
no-resolv
address=/com/127.0.0.1
및 해당 항목/etc/resolv.conf
nameserver 127.0.0.1
물론 dnsmasq
새로운 구성을 확인하려면 재부팅했는지 확인하는 것이 중요합니다.
systemctl restart dnsmasq # For systemd
# service dnsmasq restart # Otherwise
시험
ping -c1 bbc.com
PING bbc.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.061 ms