ぬまろぐ

←戻る

AWS | Lambdaでインターネットアクセスするための設定手順

2018/12/17

AWS LambdaでWebページをスクレイピングする処理を書いた際に、Lambdaからインターネットにアクセスを行う構成をとったため、そのときの構成と設定方法を紹介します。

構成の説明

今回構築したのは下図のような構成になります。

Lambdaからインターネットアクセスする場合、AWSの制約でプライベートサブネットにLambdaを配置する必要があります。そのため、パブリックサブネットにNATゲートウェイを用意する必要があります。

AWSのNATゲートウェイサービスを使つとそれなりに料金が発生するため、既に利用しているEC2をNATゲートウェイにしました。

img

構築手順

私の場合は、現状パブリットサブネットでEC2を1台利用しているだけなので、ここからの構築手順を紹介します。AWSの1年間の無料利用をしていた場合は同じ構成になるかと思います。

1. EC2の設定を変更する

AWS管理コンソールのEC2インスタンスから、NATとして利用するEC2を選択し「送信元/送信先の変更チェック」を無効にします。これをしないと手順2のルートテーブル作成の際に、EC2のNICを指定できません。

img

2. ルートテーブルの作成

Lambdaを配置するプライベートサブネットを作成するために、最初にルートテーブル作ります。

AWS管理コンソールのサービスからVPCを選択し、VPCダッシュボードにある「ルートテーブル」を選択します。「Create route table」を選択し、ルートテーブルを作成します。

作成したルートテーブルの「Routes」タブを編集し、Destinationを「0:0:0:0」、TargetをEC2のNICとしたルートを追加します。

3. プライベートサブネットを作成する

AWS管理コンソールのサービスからVPCを選択し、VPCダッシュボードにある「サブネット」を選択します。

作成したサブネットの「ルートテーブル」タブで2で作成したルートテーブルを指定します。

4. EC2のNAT設定を行う

EC2インスタンスのSSHでログインし、NATサーバの設定を行います。設定のコマンドは以下のようになりますが、192.168…の部分は3で作成したプライベートサブネットのCIDRを指定します。

iptables -t nat -A POSTROUTING -j LOG
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
service iptables save
vi /etc/sysctl.conf
 #net.ipv4.ip_forward = 1
sysctl -p

5. プライベートサブネットからEC2への設定を許可する

EC2のSGに3で作成したプライベートサブネットからの通信を許可するように設定を追加します。

6. Lambdaを作成する

Lambdaを作成した際の配置先をプライベートサブネットに設定します。またアウトバウンド通信を全て許可したSG設定をLambdaに適用します。

以上で、Lambdaからインターネットアクセスするための設定は完了となります。