AWS IoT Greengrass Core デバイスの HTTPS に利用するポート番号を確認してみた

AWS IoT Greengrass Core デバイスの HTTPS に利用するポート番号を確認してみた

2025.09.25

先日、AWS IoT Greengrass を利用するデバイスに対して、通信要件を洗い出す機会があったのですが、間違えて認識していたところがあったので、その紹介をしたいと思います。

いきなり結論

AWS IoT Greengrass ではコンポーネントのデプロイ時など、特定の処理で AWS IoT Core や AWS IoT Greengrass のクラウドサービスと HTTPS で通信します。

下記のドキュメントでは、通信先のエンドポイントと利用するプロトコルについて説明がありますが、利用されるポート番号までは記載されていません。

https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html

そのため、私は単純に Greengrass を使う場合でも「HTTPS は 443」だろうと思っていたのですが、Nucleus のドキュメントには「デフォルトで 8443」であると記載がありました。

下記の画面キャプチャにある記載を見ると、データプレーン操作時に利用される HTTPS ポートが「デフォルト 8443」だと書かれています。

01-greengrass-https-port.png

該当のドキュメントはこちらです。

https://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-nucleus-component.html

下記では、実際に検証してみた内容を紹介しています。
(前提として、すでに Greengrass Core デバイスが手元にある状態です。)

HTTPS ポートの検証をしてみた

先ほどのドキュメントを見ると、Greengrass コンポーネントのデプロイには、コントロールプレーンやデータプレーンに対する操作が発生するようです。
そのため、コンポーネントのデプロイ操作をしながら利用ポートを確認してみます。

コンポーネントをデプロイしてみた

最初に、Greengrass コアデバイスからアウトバウンドの 8443 ポートの通信をパケットキャプチャしておきます。

			
			$ sudo tcpdump dst port 8443

		

この状態で、適当なコンポーネントをクラウドからデプロイしてみました。
コンポーネントのデプロイが開始されると、次のキャプチャのように 8443 ポート宛の通信が大量に発生することが確認できました。

			
			$ sudo tcpdump dst port 8443

01:44:01.448253 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [S], seq 2321292728, win 64240, options [mss 1460,sackOK,TS val 3547898150 ecr 0,nop,wscale 7], length 0
01:44:01.474489 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 3201125310, win 502, options [nop,nop,TS val 3547898176 ecr 1425994875], length 0
01:44:01.483159 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 0:445, ack 1, win 502, options [nop,nop,TS val 3547898185 ecr 1425994875], length 445
01:44:01.510182 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 101, win 502, options [nop,nop,TS val 3547898212 ecr 1425994910], length 0
01:44:01.510347 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 4307, win 471, options [nop,nop,TS val 3547898212 ecr 1425994910], length 0
01:44:01.510495 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5125, win 465, options [nop,nop,TS val 3547898212 ecr 1425994910], length 0
01:44:01.511740 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5500, win 471, options [nop,nop,TS val 3547898213 ecr 1425994911], length 0
01:44:01.511797 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5509, win 471, options [nop,nop,TS val 3547898213 ecr 1425994911], length 0
01:44:01.521635 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 445:1321, ack 5509, win 501, options [nop,nop,TS val 3547898223 ecr 1425994911], length 876
01:44:01.526304 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1321:1396, ack 5509, win 501, options [nop,nop,TS val 3547898228 ecr 1425994911], length 75
01:44:01.539565 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1396:1665, ack 5509, win 501, options [nop,nop,TS val 3547898241 ecr 1425994911], length 269
01:44:01.540297 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1665:1671, ack 5509, win 501, options [nop,nop,TS val 3547898242 ecr 1425994911], length 6
01:44:01.540892 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1671:1716, ack 5509, win 501, options [nop,nop,TS val 3547898242 ecr 1425994911], length 45
01:44:01.566100 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5560, win 501, options [nop,nop,TS val 3547898268 ecr 1425994967], length 0
01:44:01.568543 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1716:2253, ack 5560, win 501, options [nop,nop,TS val 3547898270 ecr 1425994967], length 537
01:44:01.729077 IP test-device.39780 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5795, win 501, options [nop,nop,TS val 3547898431 ecr 1425995087], length 0
01:44:01.867346 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [S], seq 3102391368, win 64240, options [mss 1460,sackOK,TS val 3547898569 ecr 0,nop,wscale 7], length 0
01:44:01.895143 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 4175615176, win 502, options [nop,nop,TS val 3547898597 ecr 1425995294], length 0
01:44:01.900144 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 0:445, ack 1, win 502, options [nop,nop,TS val 3547898602 ecr 1425995294], length 445
01:44:01.925507 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 1403, win 501, options [nop,nop,TS val 3547898627 ecr 1425995327], length 0
01:44:01.925583 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 2805, win 491, options [nop,nop,TS val 3547898627 ecr 1425995327], length 0
01:44:01.925741 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 4207, win 481, options [nop,nop,TS val 3547898627 ecr 1425995327], length 0
01:44:01.925764 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5125, win 474, options [nop,nop,TS val 3547898627 ecr 1425995327], length 0
01:44:01.926657 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 5509, win 471, options [nop,nop,TS val 3547898628 ecr 1425995328], length 0
01:44:01.932815 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 445:1321, ack 5509, win 501, options [nop,nop,TS val 3547898634 ecr 1425995328], length 876
01:44:01.936413 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1321:1396, ack 5509, win 501, options [nop,nop,TS val 3547898638 ecr 1425995328], length 75
01:44:01.949917 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1396:1665, ack 5509, win 501, options [nop,nop,TS val 3547898651 ecr 1425995328], length 269
01:44:01.950775 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1665:1671, ack 5509, win 501, options [nop,nop,TS val 3547898652 ecr 1425995328], length 6
01:44:01.951343 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1671:1716, ack 5509, win 501, options [nop,nop,TS val 3547898653 ecr 1425995328], length 45
01:44:01.978486 IP test-device.39788 > ec2-35-74-50-19.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1716:2482, ack 5560, win 501, options [nop,nop,TS val 3547898680 ecr 1425995378], length 766

(以下略)


		

この結果から、Greengrass コアデバイスが AWS 側と通信するときに利用する HTTPS のポートは 8443であることが分かりました。
このポートは設定で変更可能ですが、このデバイスはデフォルト設定でインストールしていたので 8443 を使っていることが分かりました。

コンポーネントデプロイ時の S3 アクセスに使うポートは?

先ほどの検証で、Greengrass デバイスが利用する HTTPS ポートが 8443 であることは分かりました。
しかし、Greengrass コンポーネントをデプロイする際は、そのアーティファクトを S3 バケットから HTTPS でダウンロードします。この HTTPS アクセスも 8443 なのでしょうか??

気になったので、任意のカスタムコンポーネントで試してみました。
(先ほどと同様にパケットキャプチャしておきます。)

下記はキャプチャしたログです。
8443 ポートでは S3 のエンドポイントと思われるアドレスにはアクセスしていないことが分かります。しかし、このコンポーネントのデプロイは正常に終了していたので、アーティファクトのダウンロードには 8443 ポートを使っていないと推測されます。

			
			03:23:42.081635 IP test-device.56006 > ec2-13-115-62-231.ap-northeast-1.compute.amazonaws.com.8443: Flags [S], seq 1993481859, win 64240, options [mss 1460,sackOK,TS val 4219857285 ecr 0,nop,wscale 7], length 0
03:23:42.096007 IP ec2-13-115-62-231.ap-northeast-1.compute.amazonaws.com.8443 > test-device.56006: Flags [S.], seq 1139930342, ack 1993481860, win 26847, options [mss 1414,sackOK,TS val 2291960080 ecr 4219857285,nop,wscale 8], length 0
03:23:42.096101 IP test-device.56006 > ec2-13-115-62-231.ap-northeast-1.compute.amazonaws.com.8443: Flags [.], ack 1, win 502, options [nop,nop,TS val 4219857300 ecr 2291960080], length 0
03:23:42.105447 IP test-device.56006 > ec2-13-115-62-231.ap-northeast-1.compute.amazonaws.com.8443: Flags [P.], seq 1:446, ack 1, win 502, options [nop,nop,TS val 4219857309 ecr 2291960080], length 445
03:23:42.118046 IP ec2-13-115-62-231.ap-northeast-1.compute.amazonaws.com.8443 > test-device.56006: Flags [.], ack 446, win 110, options [nop,nop,TS val 2291960104 ecr 4219857309], length 0
03:23:42.118324 IP ec2-13-115-62-231.ap-northeast-1.compute.amazonaws.com.8443 > test-device.56006: Flags [P.], seq 1:101, ack 446, win 110, options [nop,nop,TS val 2291960104 ecr 4219857309], length 100

(中略)

03:26:07.717089 IP test-device.57536 > ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443: Flags [R], seq 3918452221, win 0, length 0
03:26:07.717289 IP ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443 > test-device.57536: Flags [F.], seq 7515, ack 2481, win 193, options [nop,nop,TS val 2821975193 ecr 121887294], length 0
03:26:07.717309 IP test-device.57536 > ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443: Flags [R], seq 3918452221, win 0, length 0
03:26:07.718181 IP ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443 > test-device.57526: Flags [.], ack 2481, win 130, options [nop,nop,TS val 2821975194 ecr 121887295], length 0
03:26:07.718497 IP ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443 > test-device.57526: Flags [F.], seq 7495, ack 2481, win 130, options [nop,nop,TS val 2821975195 ecr 121887295], length 0
03:26:07.718531 IP test-device.57526 > ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443: Flags [R], seq 2905897485, win 0, length 0
03:26:07.718548 IP ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443 > test-device.57536: Flags [.], ack 2482, win 193, options [nop,nop,TS val 2821975195 ecr 121887294], length 0
03:26:07.718566 IP test-device.57536 > ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443: Flags [R], seq 3918452222, win 0, length 0
03:26:07.718572 IP ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443 > test-device.57526: Flags [P.], seq 7464:7495, ack 2481, win 130, options [nop,nop,TS val 2821975195 ecr 121887295], length 31
03:26:07.718588 IP test-device.57526 > ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443: Flags [R], seq 2905897485, win 0, length 0
03:26:07.719665 IP ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443 > test-device.57526: Flags [.], ack 2482, win 130, options [nop,nop,TS val 2821975195 ecr 121887296], length 0
03:26:07.719682 IP test-device.57526 > ec2-52-194-32-202.ap-northeast-1.compute.amazonaws.com.8443: Flags [R], seq 2905897486, win 0, length 0

		

8443 では S3 にアクセスしてなさそうということが分かったので、次に Greengrass コアデバイスからアウトバウンドの 443 ポートの通信を遮断してみます。

			
			sudo iptables -A OUTPUT -p tcp --dport 443 -j DROP

		

この状態であらためてカスタムコンポーネントをデプロイしてみました。
デプロイを開始するとパケットをキャプチャするまでもなく、Greengrass のログにエラーが出ていることが確認できました。
(デフォルトのログ:/greengrass/v2/logs/greengrass.log)

エラー内容を見ると、標準的な HTTP(HTTPS)接続を S3 に対して実行しようとしてタイムアウトしていることが分かります。

			
			evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.16.59] failed: connect timed out

		

下記はエラーの全文です。

			
			2025-09-11T18:39:04.544Z [INFO] (pool-3-thread-108) com.aws.greengrass.componentmanager.builtins.GreengrassRepositoryDownloader: get-artifact-size. task failed and will be retried. {task-attempt=1, componentIdentifier=aws.greengrass.LambdaRuntimes, artifactUri=greengrass:4WtOFyERmXHXaeqmJK8jwT_5hYELH1YPlrtxBINdZYQ=/runtime.zip}
org.apache.http.conn.ConnectTimeoutException: Connect to evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com:443 [evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.137.46, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.163.18, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.16.83, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.151.98, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.199.18, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.172.58, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/3.5.154.206, evergreencomponentmanageme-artifactbucket7410c9ef-xxxxxxxxxxxx.s3.ap-northeast-1.amazonaws.com/52.219.16.59] failed: connect timed out
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
	at software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory$DelegatingHttpClientConnectionManager.connect(ClientConnectionManagerFactory.java:86)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
	at software.amazon.awssdk.http.apache.internal.impl.ApacheSdkHttpClient.execute(ApacheSdkHttpClient.java:72)
	at software.amazon.awssdk.http.apache.ApacheHttpClient.execute(ApacheHttpClient.java:254)
	at software.amazon.awssdk.http.apache.ApacheHttpClient.access$500(ApacheHttpClient.java:104)
	at software.amazon.awssdk.http.apache.ApacheHttpClient$1.call(ApacheHttpClient.java:231)
	at com.aws.greengrass.componentmanager.builtins.GreengrassRepositoryDownloader.getDownloadSizeWithoutRetry(GreengrassRepositoryDownloader.java:121)
	at com.aws.greengrass.componentmanager.builtins.GreengrassRepositoryDownloader.lambda$getDownloadSize$0(GreengrassRepositoryDownloader.java:102)
	at com.aws.greengrass.util.RetryUtils.runWithRetry(RetryUtils.java:77)
	at com.aws.greengrass.util.RetryUtils.runWithRetry(RetryUtils.java:45)
	at com.aws.greengrass.componentmanager.builtins.GreengrassRepositoryDownloader.getDownloadSize(GreengrassRepositoryDownloader.java:102)
	at com.aws.greengrass.componentmanager.ComponentManager.prepareArtifacts(ComponentManager.java:474)
	at com.aws.greengrass.componentmanager.ComponentManager.preparePackage(ComponentManager.java:430)
	at com.aws.greengrass.componentmanager.ComponentManager.lambda$preparePackages$2(ComponentManager.java:391)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.base/java.net.Socket.connect(Socket.java:609)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)
	at software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory.connectSocket(SdkTlsSocketFactory.java:77)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
	... 24 more

		

実際に、Greengrassのコンソール上でも該当のデプロイが失敗していることが確認できました。

検証が終わったので、iptables の設定を戻しておきます。

			
			sudo iptables -D OUTPUT -p tcp --dport 443 -j DROP

		

最後に

ドキュメント上では、プロトコルの種類とそのポート番号については別々のページに記載されているため、正しく仕様を把握するには両方の記載内容を組み合わせて理解する必要があると再認識できました。

この記事がどなたかのお役に立てれば幸いです。

この記事をシェアする

FacebookHatena blogX
AWS IoT Greengrass Core デバイスの HTTPS に利用するポート番号を確認してみた | DevelopersIO