AWS
vpc

AWS VPCの勉強メモ

試しに下記の環境をCloudFormationを使って構築してみる。

Picture1.png

下記、作成したCloudFormationのテンプレート。
https://github.com/khiraiwa/cloud-certifications/blob/1ab33227b014a4dc0679291729b1a117420a5cde/vpc/template.yml

YAML形式でやってみた。これだとコメントが書ける。

################################
#### VPC
################################
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      EnableDnsSupport: 'true'
      EnableDnsHostnames: 'true'
      Tags:
      - Key: Name
        Value:
          Ref: VpcName

また、最近だと短縮記法も使えるようになっている。

  SubnetPublic1a:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId:
        Ref: VPC
      AvailabilityZone: !Sub
      - "${AWS::Region}${AZ}"
      - AZ: !Select [0, !Ref VpcAzs]
      CidrBlock:
        Ref: VpcSubnetCidrBlockPublic1a
      MapPublicIpOnLaunch: true
      Tags:
      - Key: Name
        Value:
          Ref: VpcSubnetNamePublic1a

SubnetにセットするNetwork ACLにはデフォルトで*のルールが有る。
追加したルールに一致するものがなければ*のルールが使われる。
(つまり、拒否される)

VPC_Management_Console 2.png

参照: http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_ACLs.html#ACLRules

また、Network Aclはステートレス。例えばインバウンドでtcp/22を許可していいてもアウトバウンドは通さない。戻りのローカルポート(1024-65535とか)をアウトバウンドで開ける必要がある。
(逆にSecurityGroupはステートフル)

また、下記の図のように、あるサブネットからは特定のサブネットにしか通信できないようにするにはNetwork ACLで制御する(しかないのかな?)

Picture2.png

VPCペアリングはペアリングしたVPCにしか通信できない。例えば下記の場合、AからCには行けない。

Picture4.png