cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

Redshiftのアクセス制御について触りながら分かったことを記載しておきます。
今後も気づくことがあるかもしれないので今回は(1)とします。

S3 Bucket Policy でIP制限している場合、どのIPアドレスを許可すればよいか

こんな感じのS3 Bucket Policyを設定しているとき、RedshiftからCOPY文で接続するためのIPアドレスとして何を指定すればよいか。

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::bucket-name/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "0.0.0.0/0"
        },
        "NotIpAddress": {
          "aws:SourceIp": [
            "ip-ec2-upload-to-s3/32",
            "ip-redshift-copy-from-s3/32"
          ]
        }
      }
    }
  ]
}

Compute Node の Public IP

Redshift Management ConsoleのClusterページにあるConfigurationタブの右下に、以下のようなNode IP Addressesの記載があります。

この例はPublicly Accessible = Noで、dw2.largeが2ノード起動しています。この状態で分かったことは以下です。

01

  • Leader Nodeは`Publicly Accessible = No`なので、インターネット経由でLeader Nodeへの接続はできないが、COPY時のS3への接続性においては関係がない。
  • S3のBucket PolicyにはCompute NodeのPublic IPを許可すればOK。

参考文献

ということで以下のドキュメントは参照しましたが詳細は載ってなかったので、ここは動かしながら理解が必要ということみたいですね。

元記事は、こちらです。