AWS VPC (1)Amazon Virtual Private Cloud とは

VPC

各アベイラビリティゾーンのデフォルトサブネットを持つデフォルトVPCが標準で作成され、インスタンス起動時にサブネットを指定しなかった場合は、このデフォルトVPCが指定される。これに加えて、ユーザ独自にデフォルト外VPCを作成することが可能である。VPCは、ルータを通じて他のVPCと接続(ピアリング接続)したり、S3などの他のAWSサービスのエンドポイントと接続したり、VPN経由で自社のネットワークと接続したりすることが可能である。VPCを利用するAWSサービスの例としては、AWS Data Pipeline, Elastic Beanstalk, Elastic Load Balancing, Amazon ElastiCache, Amazon EMR, AWS OpsWorks, Amazon RDS, Amazon Redshift, Route 53などがある。

VPCは生成する際にサイズを指定することが可能で、/16から/28までを指定できる。生成後にサイズを変更することはできないが、セカンダリ IPv4 CIDR ブロックを関連付けることができる。指定するCIDR ブロックは、プライベートIPアドレスの範囲から指定することが望ましい。

デフォルトVPC

デフォルトVPCには、ルータインターネットゲートウェイが含まれており、各サブネットは、インスタンスに対してパブリックIPの割り当てが実行される、インターネットに接続可能なパブリックサブネットである。サブネットを指定せずにEC2を起動した場合は、デフォルトVPCで起動される。デフォルトVPCでは、サイズ /16 の IPv4 CIDR ブロック (172.31.0.0/16) の作成と、インターネットゲートウェイとの接続を行う。新しいアベイラビリティーゾーンが追加された場合は、数日以内に、このアベイラビリティーゾーン内でデフォルト VPC の新しいデフォルトサブネットが自動的に作成される

デフォルトVPC

デフォルト外VPC

デフォルト外VPCには、ルータやインターネットゲートウェイが含まれておらず、自分で設定に加える必要がある。また、サブネットも標準では、パブリックIPの割り当てが行われず、プライベートサブネットに設定されている。

デフォルト外VPCでインターネット接続を可能にするためには、インターネットゲートウェイのアタッチや、ルーティングテーブルの追加、各インスタンスへのElastic IPの割り当てが必要である。プライベートサブネットの場合、サブネット内のインスタンスが直接インターネットに接続することができないため、別のパブリックサブネット内にNAT gatewayを生成し、このNAT gateway経由でインターネットと接続を行う。Elastic IPの数には限りがあるので、静的なIPアドレスを多く使用するようなネットワーク構成の場合にも、NAT gatewayは有効である。なお、NAT gatewayはIPv6には非対応である。

サブネット

サブネットは、アベイラビリティゾーン単位で指定できる。サブネットは生成する際にサイズを指定することが可能で、/16から/28までを指定できる。指定したCIDR ブロックの先頭4アドレスと最後の1アドレスは使用することができない。なお、先頭アドレスは、ルータに接続されるIPアドレスとなっている。また、CIDRブロックのサイズを後から増減することはできない

インターネットに接続する必要のあるリーソースの場合は、パブリックサブネットを、インターネットに接続しないリソースの場合は、プライベートサブネットに接続する。

サブネット

ルーティング

各VPCには暗黙的なルータ(implied router)が存在し、標準ではVPC内の各サブネット間の通信のみ許可されている。また、ルートテーブルは、標準で生成されるメインルートテーブルと、各サブネットにそれぞれ割り当てることが可能なカスタムルートテーブルが存在する。明示的にルートテーブルの関連付けを行わない場合は、メインルートテーブルにアタッチされる。インターネットゲートウェイを通じて、インターネットに接続する場合は、ルートテーブルにインターネットゲートウェイへの経路を明示的に追加する必要がある。また、VPN、Direct Connect、VPC Peeringでは、2hop以上先のネットワークとは通信できない

インターネットゲートウェイ(IGW)

EC2へインターネットへの接続を提供する。サブネット単位でルーティングを指定でき、インターネットゲートウェイを指定したサブネットをパブリックサブネットと呼ぶ。インターネットとの間で通信が必要なインスタンスには、パブリックIPの付与が必要となる。冗長性と高い可用性を有しており、水平スケーリングが可能である。

バーチャルプライベートゲートウェイ(VGW)

VPN接続やDirect Connect接続のエンドポイントを提供する。1つのVPCあたり1つのVGWを接続することができる。

カスタマーゲートウェイ(CGW)

オンプレミス側のVPNエンドポイント。

NATゲートウェイ

NATゲートウェイには、1つElastic IPを付与することができ、プライベートサブネットのインスタンスからインターネットへの接続を可能とする。インターネット側からのサブネットへのアクセスは許可されない。NATゲートウェイは、パブリックサブネットに配置する必要がある。また、NATゲートウェイは、5Gbpsの帯域をサポートし、最大45bpsまで自動的に拡張される。タイムアウト時、NAT GatewayはRSTパケットを送信するが、NATインスタンスの場合はFINパケットを送信する。

VPCピアリング

異なるVPC間でルーティングを行うサービス。MTUは1500
同一リージョン内のVPCのみ接続可能で、重複したCIDRブロックのサブネットは接続できない

ネットワークインタフェース

ネットワークインタフェースは、インスタンスにアタッチ、デタッチしても属性情報は変わらない。1つのインスタンスに複数のネットワークインタフェースをアタッチすることで、管理用ネットワークを別に作成することなどが可能となる。一方で、複数のネットワークインタフェースが存在すると、パブリックIPアドレスの自動割り当ては利用不可となる。

プライマリプライベートIPアドレスは、一度設定すると変更することはできない。セカンダリプライベートIPアドレスは、異なるインタフェースに割り当て直すことが可能である。EC2インスタンスは、プライベートIPアドレスのみを認識し、割り当てられたパブリックIPアドレスは、インターネットゲートウェイでNATされる。パブリックIPアドレスを有効化している場合、Elastic IPを指定しない限りアドレスは、起動時に自動的に割り当てられる

パブリックIP

ネットワーク帯域

同一リージョン内通信の場合、最大25Gbpsが利用可能となる。

通信方式 同一プレイスメントグループ 同一リージョン S3 リージョン外
シングルフロー 最大10Gbps 最大5Gbps 最大25Gbps 最大5Gbps
マルチフロー 最大25Gbps 最大25Gbps 最大25Gbps 最大5Gbps

セキュリティ

ネットワークアクセスリスト(NACL)

サブネットごとに設定するフィルタ。ステートレス。デフォルトは全て許可

セキュリティグループ

EC2の仮想インタフェースとして機能。ステートフル。デフォルトは全ての通信を禁止。拒否ルールは記述できない。また、デフォルトのセキュリティグループは削除できない

VPCのセキュリティ

DNS

各VPCにはDNSが用意されており、VPCのネットワーク範囲(CIDR)のアドレスに+2したIPで参照が可能。参照が可能なのはVPC内のEC2のみで、Direct Connect等で接続したオンプレミス環境からは参照することができない

フローログ

VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能。データは、CloudWatch Logs と Amazon S3 に出力することができる。

VPCエンドポイント

VPCエンドポイントを用いることで、AWSサービスやVPCエンドポイントサービスをプライベートに接続することができる。VPCエンドポイントを用いることでインターネットに出ることなく各種AWSサービスと通信を行うことができる。冗長性と高可用性を持ち、帯域幅の制約は存在しない。対応しているAWSのサービスは以下の通り。

インタフェースエンドポイント

プライベートIPアドレスを持つエンドポイント。プライベート DNSオプションを有効化しておくことで、通常のエンドポイントが、プライベートIPアドレスに置換される。

  • Amazon API Gateway
  • Amazon CloudWatch
  • Amazon CloudWatch Events
  • Amazon CloudWatch Logs
  • AWS CodeBuild
  • Amazon EC2 API
  • Elastic Load Balancing API
  • AWS Key Management Service
  • Amazon Kinesis Data Streams
  • Amazon SageMaker ランタイム
  • AWS Secrets Manager
  • AWS Service Catalog
  • Amazon SNS
  • AWS Systems Manager

ゲートウェイエンドポイント

ゲートウェイエンドポイント

ルートテーブルに指定されたルートのターゲットとなるエンドポイント。VPC ルートテーブルを指定する必要がある。

  • Amazon S3
  • DynamoDB

インタフェースエンドポイント

Google Play Developer ConsoleでOpenSSLのバージョンエラーが発生したときの対応法

Cocos2d-xを使ったアプリをGoogle Playで公開しようとするときに、以下のエラーが表示されてAPKの公開を拒否される場合がある。

更新が拒否されたアプリ

このAPKは、セキュリティの脆弱性が含まれている点が悪意のある行為に関するポリシーに違反しているため、非承認となりました。

発生した問題

アプリで使用中のOpenSSLのバージョンにセキュリティの脆弱性があります。

Cocos2d-xには、OpenSSLのライブラリが含まれているため、OpenSSLの機能を使っていない場合でも、含まれているOpenSSLのバージョンによっては上記の警告が出る場合がある。その際は、下のリンクにもあるように、内含されているOpenSSLのバージョンを上げる必要がある。