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

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

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

1337閲覧

SAM-CLIで仮想環境外のブラウザから接続できない

Otazoman

総合スコア44

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2019/05/05 08:47

編集2019/05/06 07:29

前提・実現したいこと

AWSコンソールではなくローカルで開発を行うためにSAM-CLI+DynamoDB Localをインストールしました。導入したのはWindowsのHyper-V上のUbuntuで、DynamoDB-LocalについてはうまくWindowsからポート指定で接続できるのですが、SAM-CLIのAPIGateWayについてはWindows側からではブラウザから接続できません。

Windowsのブラウザ上からSAM-CLIのAPIGatewayにプライベートアドレス+ポート番号で接続したいのですが、どのようにすればいいのか見当がつかないのでお力をお貸しいただけますでしょうか。

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

イメージ説明

ブラウザからアクセスすると上記のようにエラーとなります。

仮想のUbuntu上でcurlすると接続に失敗しているようです。

$ curl -D - http://192.168.1.248:3001/hello curl: (7) Failed to connect to 192.168.1.248 port 3001: 接続を拒否されました

試したこと

Docker-composeの設定でどうにかできないかと考えてdocker-compose.ymlを以下の通りに
してみてdocker-composeをupしなおしましたが、結果は変わりませんでした。
※dynamodbadminについては「http://192.168.1.248:8001」で接続可能でした。

docker

1version: '3.3' 2 3services: 4 dynamodblocal: 5 image: amazon/dynamodb-local 6 networks: 7 - default 8 ports: 9 - 8000:8000 10 command: -jar DynamoDBLocal.jar -sharedDb -dbPath ./data 11 volumes: 12 - /home/nishimrm/docker-dynamodb/dynamodb_data:/home/dynamodblocal/data 13 networks: 14 - lambda-local 15 16 dynamodbadmin: 17 image: instructure/dynamo-local-admin 18 networks: 19 - default 20 ports: 21 - 8001:8001 22 environment: 23 DYNAMO_ENDPOINT: http://localhost:8000/ 24 25networks: 26 lambda-local: 27 external: true 28 sam-api-local: 29 external: true

netstatではポート3000番で受け口自体はあるような状況です。

$ netstat -ant 稼働中のインターネット接続 (サーバと確立) Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN tcp 0 36 192.168.1.248:22 192.168.1.250:59182 ESTABLISHED tcp 0 0 192.168.1.248:22 192.168.1.250:59199 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 :::8000 :::* LISTEN tcp6 0 0 :::8001 :::* LISTEN

おそらく、DockerのネットワークでホストのUbuntuのポートから
SAM-CLIの待受けポートに転送すればいいのかと考えて192.168.1.248の3000宛
リクエストを127.0.0.1の3000に転送するiptablesコマンドを実行しましたが、
転送できていないようです。

iptables -t nat -A PREROUTING -m tcp -p tcp --dst 192.168.1.248 --dport 3000 -j DNAT --to-destination 127.0.0.1:3000

ここまで調べてみましたが妙案が思い浮かびません。

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

Windows10Pro 64bit
Hyper-V
Linux aws-dev-ubuntu 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Docker version 18.09.5, build e8ff056
docker-compose version 1.24.0, build 0aa59064
SAM CLI, version 0.15.0

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

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

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

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

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

moonphase

2019/05/08 10:05

docker-composeにSAM-CLIのAPIGatewayに関する記述がないのですが、これはどのように起動しているんでしょうか?
Otazoman

2019/05/08 11:04

SAM-CLIはそのままローカルのUbuntuにインストールしています。DynamoDBLocalについてはdocker-composeのイメージを導入している状況です。APIGatewayは $ sam local start-api でローカルのUbuntu(仮想マシン上)で実行しており、こちらは127.0.0.1から接続はできます。ホストのWindows10側から192.168.1.248:3000にて接続する方法がないか思案しているところです。
guest

回答1

0

ベストアンサー

sam local start-apiはデフォルトで127.0.0.1でLISTENします。
--hostパラメータを与えてみてください

sam local start-api --host 0.0.0.0

投稿2019/05/08 11:12

moonphase

総合スコア6621

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

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

Otazoman

2019/05/11 00:21

ありがとうございます!! うまく動作しました。hostというオプションがあったのですね。 頑張っていろいろと試していきたいと思います。非常に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問