質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3694閲覧

SAM-CLIのAPIGatewayでlocalhostではレスポンス200で返ってくるのに127.0.0.1だと502エラーとなる

Otazoman

総合スコア44

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/03/06 07:31

編集2019/03/07 08:16

前提・実現したいこと

SAM-CLIとDynamoDBLocalの環境を構築して、ローカルでServelessの開発を行いたいと考えております。ここを参考にして環境までは構築しました。APIGatewayをローカルで立ち上げてIPアドレスでアクセスできるようにしたいのですが、どの様にすればうまく動かせるかご教示いただけないでしょうか。
色々と試行錯誤してみましたがどうしてもうまく動きません。すいませんがご支援お願いいたします。

発生している問題・エラーメッセージ

APIGateWayを立ち上げて以下のコマンドだとうまく結果が返ってくるのですが

$ curl http://localhost:3000/hello {"message": "hello world"}

127.0.0.1だとMcafeeに引っかかってしまって結果が返ってきません。Mcafeeを無効にしても結果は変わりませんでした。

$ curl http://127.0.0.1:3000/hello

Mcafeeのメッセージ
Cannot Connect
The proxy could not connect to the destination in time.

インストール手順

#PROXY設定 $ sudo vi /etc/profile #---------------------------------------- PROXY="http://proxyaddress:port" # proxyサーバのドメインとポートを指定 export http_proxy=$PROXY export HTTP_PROXY=$PROXY export https_proxy=$PROXY export HTTPS_PROXY=$PROXY export NO_PROXY=localhost export no_proxy=localhost #---------------------------------------- $ source /etc/profile $ vim ~/.curlrc #---------------------------------------- proxy = "http://proxyaddress:port" #---------------------------------------- #パッケージ更新 $ sudo apt-get -y update #https経由のaptリポジトリ許可 $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common #PGP-KEY取得 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - #DockerCEインストール $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get -y install docker-ce #sudoなしDockerコマンド実行可能設定 $ docker -v Docker version 18.09.1, build 4c52b90 $ sudo usermod -aG docker $(whoami) $ sudo service docker restart $ docker info #Docker-composeインストール $ export compose='1.23.2' $ sudo curl -L https://github.com/docker/compose/releases/download/${compose}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod 0755 /usr/local/bin/docker-compose $ docker-compose -v docker-compose version 1.23.2, build 1110ad01 #Proxy設定 $ sudo mkdir /etc/systemd/system/docker.service.d $ sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf #-------------------- [Service] Environment="HTTP_PROXY=http://proxyaddress:port" "HTTPS_PROXY=http://proxyaddress:port" "NO_PROXY=localhost" #-------------------- $ sudo systemctl daemon-reload $ sudo systemctl restart docker $ sudo systemctl enable docker #AWS-CLIインストール $ sudo apt-get -y install python-pip python3-pip $ pip --version pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ pip3 --version pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6) $ pip install awscli --upgrade --user $ export PATH=~/.local/bin:$PATH $ aws --version aws-cli/1.16.103 Python/2.7.15rc1 Linux/4.15.0-45-generic botocore/1.12.93 $ aws configure AWS Access Key ID [None]:AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: ap-northeast-1 Default output format [None]: json #DynamoDB local $ mkdir docker-dynamodb $ cd docker-dynamodb $ vi docker-compose.yml +-------------------------------------------------------------------- version: '3.3' services: dynamodblocal: image: amazon/dynamodb-local networks: - default ports: - 8000:8000 command: -jar DynamoDBLocal.jar -sharedDb -dbPath ./data volumes: - /home/nishimrm/docker-dynamodb/dynamodb_data:/home/dynamodb/data dynamodbadmin: image: instructure/dynamo-local-admin networks: - default ports: - 8001:8001 environment: DYNAMO_ENDPOINT: http://localhost:8000/ +-------------------------------------------------------------------- $ docker-compose up -d $ docker-compose stop $ docker-compose start #SAM-CLIインストール $ cd $ pip install aws-sam-cli $ pip install boto3 $ sam --version SAM CLI, version 0.11.0 /home/nishimrm/.local #サンプルアプリケーション作成 $ sam init --runtime python3.7 --name testpj $ cd testpj $ tree $ cd hello_world #$ pip install -r requirements.txt -t hello_world/build/ --proxy=http://proxyaddress:port $ vi app.py + from botocore.vendored import requests $ cd ../

試したこと

MCafeeを無効にして127.0.0.1で接続してみたりしましたが、DynamoDBLocalでは接続できるのに
SAM-CLIのAPIGatewayに127.0.0.1で接続しようとするとはねられます。
pingについてはlocalhostでも127.0.0.1でも通る状態です。

ホストのWindows10Proからは該当の仮想マシンのIPアドレスで接続しています。DynamoDB-Localでは
接続できますが、SAM-CLIのAPIGateWayへは接続できない状態です。
ポートを8080に変更してAPIGatewayを起動しましたがそれでもうまくいきませんでした。

curlでのレスポンスです。エラーとなる方です。

$ curl -D - http://localhos127.0.0.1:3000/hello HTTP/1.1 502 cannotconnect Via: 1.1 proxyaddress (McAfee XXXXX) Content-Type: text/html Cache-Control: no-cache Content-Length: 2556 Proxy-Connection: Keep-Alive

正常時のレスポンスです。

$ curl -D - http://localhost:3000/hello HTTP/1.0 200 OK Content-Type: application/json Content-Length: 26 Server: Werkzeug/0.14.1 Python/2.7.15rc1 Date: Wed, 06 Mar 2019 XX:XX:XXX GMT

補足情報(FW/ツールのバージョンなど)

Windows10Pro上に仮想のHyper-Vを立ててその中のLinuxに
SAM-CLIとDynamoDBLocalをインストールしています。DynamoDBLocalの方では
エラーは出ておりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

McAfeeとか手を施せない箇所のネットワークが原因のようでどうしようもなく解決しようが
ないためクローズさせていただきます。

試しにMcAfeeが入っていない端末で同じように仮想環境で試してみました。
いずれも問題なくレスポンスされてきています。Proxyも存在しない状態なので
McAfee+Proxyの状態だと127.0.0.1に対して特殊な処理をしているのかと思います。

$ curl -D - http://127.0.0.1:3000/hello HTTP/1.0 200 OK Content-Type: application/json Content-Length: 26 Server: Werkzeug/0.15.2 Python/3.7.3 Date: Sun, 05 May 2019 08:16:44 GMT
$ curl -D - http://localhost:3000/hello HTTP/1.0 200 OK Content-Type: application/json Content-Length: 26 Server: Werkzeug/0.15.2 Python/3.7.3 Date: Sun, 05 May 2019 08:19:50 GMT

投稿2019/05/05 08:25

Otazoman

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問