メインコンテンツまでスキップ
バージョン: 26.x

AWS での BYOC — クラウドリソース準備

このガイドは、VeloDB Cloud BYOC warehouse 向けの AWS リソースを準備するクラウド管理者向けのリファレンスです。これらのリソースの大部分は Template Mode で使用される CloudFormation テンプレートによって作成できます。Wizard Mode を使用する場合、または個別のリソースをより厳密に制御する必要がある場合にのみ、手動で作成してください。

エンドツーエンドの warehouse 作成フローについては、Wizard Mode を使用した BYOC Warehouse の作成 を参照してください。

Data credential (S3 bucket + IAM role)

VeloDB はストレージ・コンピュート分離アーキテクチャを使用しており、データは S3 に保存されます。Data Credential は、VeloDB warehouse を実行する EC2 インスタンスにそのバケットへの読み書きアクセス権限を付与します。

1. S3 bucket の作成

注意 バケットは warehouse と同じ AWS リージョンに配置する必要があります。

  1. 管理者として AWS S3 Console にサインインし、Create bucket をクリックします。
  2. バケット名を入力し、対象リージョンを選択します。
  3. Bucket Versioning を有効にします(推奨)。
  4. Create bucket をクリックします。
  5. VeloDB console 用にバケット名をコピーします。

2. IAM policy の作成

  1. AWS IAM Console を開き、Policies → Create policy に移動します。

  2. JSON タブに切り替え、以下のポリシーを貼り付けます。その際、<your-bucket-name> を前のステップのバケット名に置き換えてください。

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::<your-bucket-name>",
    "Action": [
    "s3:GetBucketLocation",
    "s3:GetBucketVersioning",
    "s3:PutBucketCORS",
    "s3:ListBucket",
    "s3:ListBucketVersions",
    "s3:ListBucketMultipartUploads"
    ]
    },
    {
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::<your-bucket-name>/*",
    "Action": [
    "s3:GetObject",
    "s3:GetObjectVersion",
    "s3:PutObject",
    "s3:DeleteObject",
    "s3:DeleteObjectVersion",
    "s3:AbortMultipartUpload",
    "s3:ListMultipartUploadParts"
    ]
    },
    {
    "Effect": "Allow",
    "Action": ["sts:AssumeRole"],
    "Resource": "*"
    }
    ]
    }
  3. Nextをクリックし、ポリシーに名前を付けて(例:VeloDBDataStorageAccess)、Create policyをクリックします。

3. サービスIAMロールを作成する

  1. IAMで、Roles → Create roleに移動します。

  2. 信頼されたエンティティタイプとしてAWS serviceを選択し、ユースケースとしてEC2を選択します。

  3. 先ほど作成したポリシーをアタッチします。

  4. ロールに名前を付けて(例:VeloDBDataStorageAccessRole)作成します。

  5. ロールのTrust Relationshipsタブで、信頼ポリシーを以下のものに置き換えます。その際、<your-aws-account-id><your-role-name>を適切な値に置き換えてください:

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "Service": "ec2.amazonaws.com",
    "AWS": "arn:aws:iam::<your-aws-account-id>:role/<your-role-name>"
    },
    "Action": "sts:AssumeRole"
    }
    ]
    }
  6. VeloDBコンソール用のInstance Profile ARN(形式:arn:aws:iam::<your-aws-account-id>:instance-profile/<your-role-name>)をコピーします。

デプロイメント認証情報(クロスアカウントIAMロール)

Deployment CredentialによりVeloDBがお客様のAWSアカウントでコンピュートリソースを起動できるようになります。アクセスポリシーを持つクロスアカウントIAMロールを作成します。

前提条件

上記のData Credentialセクションを完了してください。バケット名とサービスロール名が必要になります。

1. IAMポリシーを作成する

注意 VeloDB作成ウィザードでは、Data Credentialステップの完了後にすぐに使用可能なポリシーが表示されます。手動で置換することなく直接貼り付けることができます。以下のブロックは参考用の完全なポリシーです。

  1. IAMコンソールでPolicies → Create policyに移動します。

  2. JSONタブで、以下のポリシーを貼り付け、<your-aws-account-id><your-bucket-name><your-role-name>を置換します。

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Action": [
    "ec2:TerminateInstances",
    "ec2:StopInstances",
    "ec2:StartInstances",
    "ec2:RebootInstances",
    "ec2:ModifyInstanceAttribute",
    "ec2:ModifyVolume"
    ],
    "Resource": [
    "arn:aws:ec2:*:*:volume/*",
    "arn:aws:ec2:*:*:instance/*"
    ],
    "Condition": {
    "StringEquals": {
    "aws:ResourceTag/resource-created-by": "velodb"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": [
    "ec2:DescribeVpcs",
    "ec2:DescribeSubnets",
    "ec2:DescribeAccountAttributes",
    "ec2:DescribeAddresses",
    "ec2:DescribeNatGateways",
    "ec2:DescribeInternetGateways",
    "ec2:DescribeInstances",
    "ec2:DescribeSecurityGroups",
    "ec2:DescribeSecurityGroupRules",
    "ec2:DescribeAvailabilityZones",
    "ec2:DescribeInstanceTypes",
    "ec2:ModifyInstanceAttribute",
    "ec2:DescribeVolumes",
    "ec2:DescribeImages",
    "ec2:DescribeVpcEndpoints",
    "ec2:DescribePrefixLists",
    "ec2:DescribeRouteTables",
    "ec2:DescribeTags",
    "elasticloadbalancing:DescribeLoadBalancers",
    "elasticloadbalancing:DescribeListeners",
    "elasticloadbalancing:DescribeLoadBalancerAttributes",
    "elasticloadbalancing:DescribeTargetGroupAttributes",
    "elasticloadbalancing:DescribeTags",
    "elasticloadbalancing:DescribeTargetHealth",
    "elasticloadbalancing:DescribeTargetGroups",
    "iam:GetPolicy",
    "iam:GetPolicyVersion"
    ],
    "Resource": ["*"]
    },
    {
    "Effect": "Allow",
    "Action": ["ec2:RunInstances", "ec2:CreateTags"],
    "Resource": [
    "arn:aws:ec2:*:*:volume/*",
    "arn:aws:ec2:*:*:instance/*",
    "arn:aws:ec2:*:*:network-interface/*"
    ],
    "Condition": {
    "StringEquals": {
    "aws:RequestTag/resource-created-by": "velodb"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": ["ec2:RunInstances"],
    "Resource": [
    "arn:aws:ec2:*:*:image/*",
    "arn:aws:ec2:*:*:security-group/*",
    "arn:aws:ec2:*:*:subnet/*"
    ]
    },
    {
    "Effect": "Allow",
    "Action": ["ec2:CreateTags", "ec2:DeleteTags"],
    "Resource": [
    "arn:aws:ec2:*:*:instance/*",
    "arn:aws:ec2:*:*:volume/*",
    "arn:aws:ec2:*:*:network-interface/*"
    ],
    "Condition": {
    "StringEquals": {
    "ec2:ResourceTag/resource-created-by": "velodb"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": [
    "elasticloadbalancing:CreateListener",
    "elasticloadbalancing:CreateLoadBalancer",
    "elasticloadbalancing:CreateTargetGroup"
    ],
    "Resource": [
    "arn:aws:elasticloadbalancing:*:*:targetgroup/*",
    "arn:aws:elasticloadbalancing:*:*:loadbalancer/*",
    "arn:aws:elasticloadbalancing:*:*:listener/*"
    ],
    "Condition": {
    "StringEquals": {
    "aws:RequestTag/resource-created-by": "velodb"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": [
    "elasticloadbalancing:RegisterTargets",
    "elasticloadbalancing:DeleteLoadBalancer",
    "elasticloadbalancing:ModifyTargetGroupAttributes",
    "elasticloadbalancing:DeregisterTargets",
    "elasticloadbalancing:DeleteTargetGroup",
    "elasticloadbalancing:ModifyLoadBalancerAttributes",
    "elasticloadbalancing:DeleteListener"
    ],
    "Resource": [
    "arn:aws:elasticloadbalancing:*:*:targetgroup/*",
    "arn:aws:elasticloadbalancing:*:*:loadbalancer/*",
    "arn:aws:elasticloadbalancing:*:*:listener/*"
    ],
    "Condition": {
    "StringEquals": {
    "elasticloadbalancing:ResourceTag/resource-created-by": "velodb"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": [
    "elasticloadbalancing:AddTags",
    "elasticloadbalancing:RemoveTags"
    ],
    "Resource": ["arn:aws:elasticloadbalancing:*:*:*"],
    "Condition": {
    "StringEquals": {
    "elasticloadbalancing:ResourceTag/resource-created-by": "velodb"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": [
    "s3:GetBucketLocation",
    "s3:GetBucketVersioning",
    "s3:GetBucketPublicAccessBlock",
    "s3:GetLifecycleConfiguration",
    "s3:PutLifecycleConfiguration",
    "s3:ListBucket"
    ],
    "Resource": ["arn:aws:s3:::<your-bucket-name>"]
    },
    {
    "Effect": "Allow",
    "Action": [
    "iam:GetInstanceProfile",
    "iam:GetRole",
    "iam:GetRolePolicy",
    "iam:ListRolePolicies",
    "iam:ListAttachedRolePolicies"
    ],
    "Resource": [
    "arn:aws:iam::<your-aws-account-id>:instance-profile/<your-role-name>",
    "arn:aws:iam::<your-aws-account-id>:role/<your-role-name>"
    ]
    },
    {
    "Effect": "Allow",
    "Action": ["iam:PassRole"],
    "Resource": [
    "arn:aws:iam::<your-aws-account-id>:role/<your-role-name>"
    ],
    "Condition": {
    "StringEquals": {
    "iam:PassedToService": "ec2.amazonaws.com"
    }
    }
    },
    {
    "Effect": "Allow",
    "Action": ["iam:CreateServiceLinkedRole"],
    "Resource": [
    "arn:aws:iam::*:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing"
    ],
    "Condition": {
    "StringEquals": {
    "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
    }
    }
    }
    ]
    }
  3. Nextをクリックし、ポリシーに名前を付け(例:AllowVeloDBCrossAccountAccess)、Create policyをクリックします。

2. クロスアカウントIAMロールの作成

  1. IAMで、Roles → Create roleに移動します。
  2. Trusted Entity Type: AWS account
  3. Another AWS accountを選択します。
  4. Account ID: VeloDBアカウントID 757278738533を入力します。
  5. External ID: VeloDBコンソールから外部IDを貼り付けます。
  6. 作成したポリシーをアタッチします。
  7. ロールに名前を付け(例:AllowVeloDBCrossAccountAccess)、作成します。
  8. VeloDBコンソール用にRole ARNをコピーします。

VPCとサブネット

VeloDBのネットワーク要件に適合するVPCは、BYOCウェアハウスの前提条件です。

Note VeloDBウェアハウスは現在、単一AZデプロイメントをサポートしています。2つのサブネット(パブリックとプライベートを1つずつ)を推奨します。VeloDBはプライベートサブネットにデプロイされます。

  1. 管理者としてAWS VPC Consoleにサインインします。

  2. 対象リージョンを選択し、Create VPCをクリックします。

  3. Resources to create: VPC and more

  4. 以下のフィールドを調整します(その他はデフォルトを保持):

    FieldValue
    Name tag例:velodb-project
    IPv4 CIDR block希望する開始IPとサイズ。
    Number of Availability Zones1
    Number of public subnets1
    Number of private subnets1
    NAT gatewaysIn 1 AZ
    VPC EndpointsS3 Gateway(NAT料金を削減し、プライベートでS3にアクセス)
  5. Create VPCをクリックし、ワークフローが完了したらView VPCをクリックします。

create-vpc-overview

create-vpc-overview2

view-vpc

セキュリティグループ

セキュリティグループは、関連するAWSリソースへのトラフィックを制御する仮想ファイアウォールです。BYOCには通常2つのセキュリティグループが必要です。1つはVeloDB EC2インスタンス用、もう1つはVPCインターフェースエンドポイント用です。

EC2用

  1. VPC Consoleで、Security groups → Create security groupに移動します。
  2. 名前を付け(例:velodb-server-sg)、VPCを選択します。
  3. インバウンドルールを追加します:
    • Rule 1: Type All TCP、Source this security group
    • Rule 2: Type Custom TCP、Port range 8000–10000、Sourceはウェアハウスにアクセスする必要があるVPCのCIDR。
  4. アウトバウンドルールはデフォルト(すべてのアウトバウンドが許可)のままにします。
  5. Save rulesをクリックし、VeloDBコンソール用にSecurity group IDをコピーします。

VPCエンドポイント用

  1. VPC Consoleで、Security groups → Create security groupに移動します。
  2. 名前を付け(例:vpce-sg-for-velodb)、VPCを選択します。
  3. 上記と同じインバウンドルールを追加します:
    • Rule 1: Type All TCP、Source this security group
    • Rule 2: Type Custom TCP、Port range 8000–10000、Sourceはウェアハウスにアクセスする必要があるVPCのCIDR。
  4. アウトバウンドルールはデフォルトのままにします。
  5. Save rulesをクリックします。

VeloDBへのプライベートエンドポイント

BYOCトラフィックをAWSバックボーン上に保持するため、ウェアハウスがパブリックインターネットではなくPrivateLink経由でVeloDB Cloudサービスと通信できるよう、プライベートエンドポイントを作成します。

  1. VPC Consoleで、Endpoints → Create endpointに移動します。

  2. 以下を入力します:

    FieldValue
    Name例:vpce-for-velodb
    Service categoryPrivateLink Ready partner services
    Service name下記のリージョン表を参照。Verify serviceをクリック — "Service name verified"と表示されるはずです。
    VPCエンドポイントを作成するVPC。
    SubnetsエンドポイントENIを配置するプライベートサブネット。
    Security group上記で作成したVPCエンドポイント用セキュリティグループ(例:vpce-sg-for-velodb)。
    Policyフルアクセス(一般的)。
  3. Create endpointをクリックします。

VeloDBプライベートエンドポイントサービス名

AWS RegionService Name
us-east-1com.amazonaws.vpce.us-east-1.vpce-svc-0fb96af7d8cd84d4d
us-west-2com.amazonaws.vpce.us-west-2.vpce-svc-0709eceab1c84431a
eu-west-1com.amazonaws.vpce.eu-west-1.vpce-svc-027fb01a146da1e29
ap-southeast-1com.amazonaws.vpce.ap-southeast-1.vpce-svc-06e619c006c767a35
ap-east-1com.amazonaws.vpce.ap-east-1.vpce-svc-07c3dac48f26cc10a
me-south-1com.amazonaws.vpce.me-south-1.vpce-svc-0f51549e7949898ca
eu-central-1com.amazonaws.vpce.eu-central-1.vpce-svc-0b44881fddef6b599
ap-southeast-7com.amazonaws.vpce.ap-southeast-7.vpce-svc-0378cb9082f6839fd
me-central-1com.amazonaws.vpce.me-central-1.vpce-svc-01bb92d635d16039f

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

S3ゲートウェイエンドポイントは、VPC内のインスタンスにS3へのプライベート接続性を提供し、パブリックインターネットを回避してNATゲートウェイ料金を削減します。

  1. VPC Consoleで、Endpoints → Create endpointに移動します。

  2. 以下を入力します:

    FieldValue
    Name例:vpce-for-s3-gateway
    Service categoryAWS services
    ServicesS3を検索し、タイプがGatewaycom.amazonaws.{region}.s3を選択。
    VPCエンドポイントを作成するVPC。
    Route tablesプライベートサブネットに関連付けられたルートテーブル。
    PolicyFull accessまたはCustom
  3. Create endpointをクリックします。

クロスアカウントS3アクセス用IAMロール(Catalogs統合)

異なるアカウントのS3バケットから読み取るためにCatalogs統合を使用する計画がある場合、対象アカウントでIAMロールを作成し、VeloDBがそれを引き受ける権限を付与します。

  1. 対象のAWSアカウントで、IAM → Roles → Create roleを開きます。

    create iam role

  2. Custom trust policyを選択し、<velodb-role-arn>をVeloDBウェアハウスのIAM Role ARNに置き換えます:

    trust entity

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": "<velodb-role-arn>"
    },
    "Action": "sts:AssumeRole"
    }
    ]
    }
  3. ロールに付与したい権限ポリシーをアタッチし、Nextをクリックします。

    permission policies

  4. ロールに名前を付けてCreate roleをクリックします。

    iam create role

  5. ロールを開き、サマリーからARNをコピーします — 統合を設定する際にVeloDB Cloudに貼り付けます。

    iam role detail