お久しぶりです。半田です。
Qiitaや会社のTechブログにはたまに投稿していたのですが、こちらを放置していたので、久々に1つ書こうかと思います。
ここ最近少し時間ができたので手広く技術のキャッチアップをしているのですが、以下のCDK workshopを進めていた時にAWS Cloud9の作成時にエラーが発生して作れなかったので、原因を確認してみました。
目次
エラー内容
CDK Workshopでは最初にCDK実行用のAWS Cloud9を作成する手順があります。
Workshopには特にどのVPC/Subnetに作成するとかは明記されていなかったので、自環境のPrivate SubnetしかないVPCを指定して作成ボタンを押下したのですが、以下のようなエラーが発生しました。
1 個の環境の作成中にエラーが発生しました Cloud9 could not connect to the EC2 instance. Please check your VPC configuration and network settings to troubleshoot the issue.
(訳:Cloud9はEC2インスタンスに接続できませんでした。この問題を解決するには、VPCの構成とネットワーク設定を確認してください。)
原因調査
正直エラー内容から「多分Public Subnetを指定する必要があるんだろうなぁ」とは思いましたが、念のためCloud9のドキュメントを確認してみました。
公式ドキュメントを見てわかるように、Cloud9の実体にはEC2があり、利用者はそのEC2に対してアクセスを行う必要があるようです
以下にCloud9を利用する時のネットワークの制約が記載されていたので、ざっくり確認してみます。
- VPCはCloud9環境と同じAWSリージョンに存在する必要があります
- AWSアカウントは、Cloud9と同じアカウントでも異なるアカウントの共有VPCでもどちらでも問題ありません
- VPCにはPublic Subnetが必要です
- SSH経由でEC2にアクセスしている場合、EC2はPublic Subnetでのみ起動できます
- Public Subnetを利用している場合、EC2内のSSM AgentがSystems Managerに接続できるようにIGWをVPCにアタッチします
- Private Subnetを利用している場合、NATGWなどをPublic Subnetに作成して、インターネットへの通信を許可してください
- Public Subnetにはルートテーブルが必要です
- EC2に関連付けたSGで必要なインバウンド・アウトバウンドを許可している必要があります
NACLを利用している場合、必要なインバウンド・アウトバウンドの許可がされている必要があります
確認するべきは以下の部分です。
Public Subnetを利用している場合、EC2内のSSM AgentがSystems Managerに接続できるようにIGWをVPCにアタッチします
Private Subnetを利用している場合、NATGWなどをPublic Subnetに作成して、インターネットへの通信を許可してください
この記載を見る限り、EC2を作成するVPC/SubnetはPublic SubnetとPrivate Subnetのどちらでも良いようですが、Cloud9(EC2)からインターネットへの通信ができる必要があるため、Private Subnetで作成する場合はNATGWを作成しないといけないようです。
対応
EC2のPublic Subnet指定での作成は推奨されませんが、今回はWorkshopという限定的な利用のため、Public Subnet指定で再度Cloud9の作成を実行してみます。
今度はエラーが出ずに正常に作成されました。
コンソールの「開く」からCloud9へのIDEへもアクセスできました。
尚、作成時に明示的にPublic Subnetを指定しない方法もありますが、その場合は任意のPublic Subnetが選択されるようになっています。
また、接続方法にSSMを選択するとSGでインバウンドの許可設定が不要なので、特に理由がないのであればSSMでの接続としたほうがよさそうです。
参考URL
感想及び所感
というわけで、簡単な内容にはなりますが、せっかくネタがあったので書いてみました。
これでCDK Workshopに取り掛かれそうです。
余談
QiitaやZenn、会社ブログなど色々な媒体でブログを書いていると記載方法の違いもあって、分散して書くのが手間でついついどれかは放置しがちになってしまう今日この頃。
書きやすさ的には
Qiita > Hatena > Zenn > 会社ブログ
って感じなんでどうしてもQiitaに投稿しがちになってます。
現時点の各媒体の記事傾向書き出してみましたけど、被っているコンテンツもあるし、書き分け難しい...
Qiita -> 資格合格系かちょっとした検証 Hatena -> 仕事で必要になった検証や学習内容の整理用 Zenn -> がっつりした検証用 会社ブログ -> 仕事で必要になった検証