質問編集履歴
4
外部APIにも実はつながっていなかった。。。
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,9 +30,9 @@
|
|
30
30
|
|
31
31
|
Lambdaの実行ログに以下のエラーが発生し、EC2上で動くREST APIへの接続ができませんでした。
|
32
32
|
|
33
|
-
なお、別の外部のREST APIへの接続は問題なく成功しました。(公共情報等の自由にアクセス可能なREST API)
|
33
|
+
~~なお、別の外部のREST APIへの接続は問題なく成功しました。(公共情報等の自由にアクセス可能なREST API)~~
|
34
34
|
|
35
|
-
|
35
|
+
↑ごめんなさい!!VPC使ってるときは外部APIにもつながってませんでした!!!間違いでした!!!実際はNAT Gatewayまでのルーティングが正しくなかったです。。。
|
36
36
|
|
37
37
|
```
|
38
38
|
|
3
PublicIPでなくホスト名での接続
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|Lambda関数|VPC A|東京A|SG L(必要なポート上で0.0.0.0をインバウンド許可、アウトバウンドは全て許可)|-|
|
22
22
|
|
23
|
-
|EC2インスタンス|VPC A|東京A|SG E(必要なポート上でSG Lをインバウンド許可、アウトバウンドは全て許可)|1.2.3.4
|
23
|
+
|EC2インスタンス|VPC A|東京A|SG E(必要なポート上でSG Lをインバウンド許可、アウトバウンドは全て許可)|myHost(1.2.3.4のpublic Elastic IPに解決する)|
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -132,7 +132,7 @@
|
|
132
132
|
|
133
133
|
exports.handler = async (event, context, callback) => {
|
134
134
|
|
135
|
-
const url = "https://
|
135
|
+
const url = "https://myHost:port/MYRESTAPI"
|
136
136
|
|
137
137
|
const val = await test();
|
138
138
|
|
2
コードをもうちょい親切に
test
CHANGED
File without changes
|
test
CHANGED
@@ -74,15 +74,73 @@
|
|
74
74
|
|
75
75
|
```javascript
|
76
76
|
|
77
|
+
async function test(url) {
|
78
|
+
|
77
79
|
const https = require('https');
|
80
|
+
|
81
|
+
const urlObj = require('url').parse(url);
|
78
82
|
|
79
83
|
return new Promise((resolve, reject) => {
|
80
84
|
|
81
85
|
https.get(urlObj, async res => {
|
82
86
|
|
83
|
-
|
87
|
+
const { statusCode } = res;
|
84
88
|
|
89
|
+
const contentType = res.headers['content-type'];
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
let error;
|
94
|
+
|
95
|
+
if (statusCode !== 200) {
|
96
|
+
|
97
|
+
error = new Error('Request Failed.\n' + `Status Code: ${statusCode}`);
|
98
|
+
|
99
|
+
} else if (!/^application/json/.test(contentType)) {
|
100
|
+
|
101
|
+
error = new Error(
|
102
|
+
|
103
|
+
'Invalid content-type.\n' +
|
104
|
+
|
105
|
+
`Expected application/json but received ${contentType}`
|
106
|
+
|
107
|
+
);
|
108
|
+
|
109
|
+
}
|
110
|
+
|
111
|
+
if (error) {
|
112
|
+
|
113
|
+
console.error(error.message);
|
114
|
+
|
85
|
-
//
|
115
|
+
// Consume response data to free up memory
|
116
|
+
|
117
|
+
res.resume();
|
118
|
+
|
119
|
+
reject(error);
|
120
|
+
|
121
|
+
}
|
122
|
+
|
123
|
+
res.on('data', d => resolve(j));
|
124
|
+
|
125
|
+
});
|
126
|
+
|
127
|
+
});
|
128
|
+
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
exports.handler = async (event, context, callback) => {
|
134
|
+
|
135
|
+
const url = "https://1.2.3.4:port/MYRESTAPI"
|
136
|
+
|
137
|
+
const val = await test();
|
138
|
+
|
139
|
+
console.log(val);
|
140
|
+
|
141
|
+
};
|
142
|
+
|
143
|
+
|
86
144
|
|
87
145
|
```
|
88
146
|
|
1
情報追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
Lambda関数(Node.js、以下Lambda)からEC2インスタンス(以下EC2)上で動いているサービスのREST APIにパブリックIPに解決可能なホスト名で接続したいのですが、`ETIMEDOUT`で失敗します。これを成功させたいです。
|
6
6
|
|
7
7
|
※Labmdaから別の外部のREST APIへの接続には成功しています。
|
8
|
+
|
9
|
+
※EC2の当該REST APIには、自PC等外部からの接続には成功しています。
|
8
10
|
|
9
11
|
|
10
12
|
|