LoginSignup
2

More than 5 years have passed since last update.

AWS-CLIを使うインスタンスにはPublic-DNS(or EIP)が必須なので注意しよう、という話

Last updated at Posted at 2015-02-23

超基本的なことですが、後で気付くと意外と痛いことになるので、メモしておきます。

AWS-CLIは、インスタンスにPublic-DNS(IP)を振っていないと、正常に動きません。

理由は、AWS-CLIのエンドポイントはVPCの外にあるから、です。

Internet Gatewat(I-GW)まで出て行けるようなRouting tableが設定されていれば、レスポンスもI-GWまで戻ってこれるはずで、I-GWからVPCの中に対してはプライベートIPでも通信可能なことから、正常に通信できるのではないか(I-GWがプロキシ的な役割を担う事ができるのではないか)と考えることもできるのですが、残念ながらそういうわけにはいかないようです。

確かにI-GWはプロキシ的な役割を果たすのですが、グローバルIPアドレスはインスタンス側で持つ必要があります。
これは、以下ドキュメントに記載があるとおり、AWS側の仕様です。

■Internet Gateways
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html

An Internet gateway serves two purposes: to provide a target in your VPC route tables for Internet-routable traffic, and to perform network address translation (NAT) for instances that have been assigned public IP addresses.
To enable access to or from the Internet for instances in a VPC subnet, you must attach an Internet gateway to your VPC, ensure that your subnet's route table points to the Internet gateway, ensure that instances in your subnet have public IP addresses or Elastic IP addresses, and ensure that your network access control and security group rules allow the relevant traffic to flow to and from your instance.

■AWS-CLIを使うために必要な設定(まとめ)
①:CLI実行対象となるインスタンスのroot権限、もしくは操作対象リソースに対するIAM権限
②:I-GW、もしくはNATインスタンスを経由してVPCの外に出られるようなRouting設定
③:PublicなIPアドレス(AWSで自動的にアタッチされる動的なPublic-DNSでもOK)

例えばDBサーバなどは、より厳密に侵入を防ぎたいなどの理由で、Public-DNSを振らないケースがあると思いますが、そうなるとAWS-CLIコマンドが正常に実行できなくなってしまいます。

CloudwatchにカスタムメトリクスPushなど、結構些細なことで使う事になるケースがあるので、
後で使う事になって、EIP振らないといけなくなってしまった、ということがないように気をつけたいですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2