質問するログイン新規登録

質問編集履歴

4

外部APIにも実はつながっていなかった。。。

2019/10/03 08:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -14,8 +14,8 @@
14
14
  ### 発生している問題・エラーメッセージ
15
15
 
16
16
  Lambdaの実行ログに以下のエラーが発生し、EC2上で動くREST APIへの接続ができませんでした。
17
- なお、別の外部のREST APIへの接続は問題なく成功しました。(公共情報等の自由にアクセス可能なREST API)
17
+ ~~なお、別の外部のREST APIへの接続は問題なく成功しました。(公共情報等の自由にアクセス可能なREST API)~~
18
-
18
+ ↑ごめんなさい!!VPC使ってるときは外部APIにもつながってませんでした!!!間違いでした!!!実際はNAT Gatewayまでのルーティングが正しくなかったです。。。
19
19
  ```
20
20
  ERROR Uncaught Exception
21
21
  {

3

PublicIPでなくホスト名での接続

2019/10/03 08:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
  |サービス|VPC|リージョン|Security Group|IPアドレス|
10
10
  |--|--|--|--|--|
11
11
  |Lambda関数|VPC A|東京A|SG L(必要なポート上で0.0.0.0をインバウンド許可、アウトバウンドは全て許可)|-|
12
- |EC2インスタンス|VPC A|東京A|SG E(必要なポート上でSG Lをインバウンド許可、アウトバウンドは全て許可)|1.2.3.4(public Elastic IP)|
12
+ |EC2インスタンス|VPC A|東京A|SG E(必要なポート上でSG Lをインバウンド許可、アウトバウンドは全て許可)|myHost(1.2.3.4public Elastic IPに解決する)|
13
13
 
14
14
  ### 発生している問題・エラーメッセージ
15
15
 
@@ -65,7 +65,7 @@
65
65
  }
66
66
 
67
67
  exports.handler = async (event, context, callback) => {
68
- const url = "https://1.2.3.4:port/MYRESTAPI"
68
+ const url = "https://myHost:port/MYRESTAPI"
69
69
  const val = await test();
70
70
  console.log(val);
71
71
  };

2

コードをもうちょい親切に

2019/10/01 07:03

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -36,11 +36,40 @@
36
36
  ### 該当のソースコード
37
37
 
38
38
  ```javascript
39
+ async function test(url) {
39
40
  const https = require('https');
41
+ const urlObj = require('url').parse(url);
40
42
  return new Promise((resolve, reject) => {
41
43
  https.get(urlObj, async res => {
44
+ const { statusCode } = res;
45
+ const contentType = res.headers['content-type'];
46
+
47
+ let error;
48
+ if (statusCode !== 200) {
49
+ error = new Error('Request Failed.\n' + `Status Code: ${statusCode}`);
50
+ } else if (!/^application/json/.test(contentType)) {
51
+ error = new Error(
52
+ 'Invalid content-type.\n' +
53
+ `Expected application/json but received ${contentType}`
42
- ....
54
+ );
55
+ }
56
+ if (error) {
57
+ console.error(error.message);
43
- // `urlObj`は指定URLで作成したURLオブジェクトです
58
+ // Consume response data to free up memory
59
+ res.resume();
60
+ reject(error);
61
+ }
62
+ res.on('data', d => resolve(j));
63
+ });
64
+ });
65
+ }
66
+
67
+ exports.handler = async (event, context, callback) => {
68
+ const url = "https://1.2.3.4:port/MYRESTAPI"
69
+ const val = await test();
70
+ console.log(val);
71
+ };
72
+
44
73
  ```
45
74
 
46
75
  ### 試したこと

1

情報追記

2019/10/01 05:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Lambda関数(Node.js、以下Lambda)からEC2インスタンス(以下EC2)上で動いているサービスのREST APIにパブリックIPに解決可能なホスト名で接続したいのですが、`ETIMEDOUT`で失敗します。これを成功させたいです。
4
4
  ※Labmdaから別の外部のREST APIへの接続には成功しています。
5
+ ※EC2の当該REST APIには、自PC等外部からの接続には成功しています。
5
6
 
6
7
  #### 構成
7
8