AWS上のBYOC: クラウドリソースの準備
このガイドは、VeloDB Cloud BYOCウェアハウス用のAWSリソースを準備するクラウド管理者向けのリファレンスです。これらのリソースのほとんどは、Template Modeで使用されるCloudFormationテンプレートによって作成できます。Wizard Modeを使用する場合や個別のリソースをより細かく制御する必要がある場合のみ、手動で作成してください。
エンドツーエンドのウェアハウス作成フローについては、Wizard Modeを使用したBYOCウェアハウスの作成を参照してください。
データクレデンシャル(S3バケット + IAMロール)
VeloDBはストレージとコンピュートを分離するアーキテクチャを使用し、データはS3に保存されます。データクレデンシャルは、VeloDBウェアハウスを実行するEC2インスタンスにそのバケットへの読み取り/書き込みアクセスを付与します。
1. S3バケットを作成する
注意 バケットはウェアハウスと同じAWSリージョンにある必要があります。
- 管理者としてAWS S3 Consoleにサインインし、Create bucketをクリックします。
- バケット名を入力し、対象リージョンを選択します。
- Bucket Versioningを有効にします(推奨)。
- Create bucketをクリックします。
- VeloDBコンソール用にバケット名をコピーします。
2. IAMポリシーを作成する
-
AWS IAM Consoleを開き、Policies → Create policyに移動します。
-
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": "*"
}
]
} -
Nextをクリックし、ポリシーに名前を付け(例:
VeloDBDataStorageAccess)、Create policyをクリックします。
3. サービスIAMロールを作成する
-
IAMで、Roles → Create roleに移動します。
-
信頼されたエンティティタイプとしてAWS serviceを選択し、ユースケースとしてEC2を選択します。
-
先ほど作成したポリシーをアタッチします。
-
ロールに名前を付け(例:
VeloDBDataStorageAccessRole)、作成します。 -
ロールの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"
}
]
} -
VeloDBコンソール用にInstance Profile ARN(形式:
arn:aws:iam::<your-aws-account-id>:instance-profile/<your-role-name>)をコピーします。
Deployment credential(クロスアカウントIAMロール)
Deployment CredentialによりVeloDBがあなたのAWSアカウント内でコンピュートリソースを起動できるようになります。アクセスポリシーを持つクロスアカウントIAMロールを作成します。
前提条件
上記のData Credentialセクションを完了してください。バケット名とサービスロール名が必要になります。
1. IAMポリシーの作成
注意 VeloDB作成ウィザードはData Credentialステップを完了すると使用可能なポリシーを表示し、手動での置換なしに直接貼り付けることができます。以下のブロックは参考用の完全なポリシーです。
-
IAMコンソールで、Policies → Create policyに移動します。
-
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"
}
}
}
]
} -
Nextをクリックし、ポリシーに名前を付け(例:
AllowVeloDBCrossAccountAccess)、Create policyをクリックします。
2. クロスアカウントIAMロールの作成
- IAMで、Roles → Create roleに移動します。
- Trusted Entity Type: AWS account。
- Another AWS accountを選択します。
- Account ID: VeloDBアカウントID
757278738533を入力します。 - External ID: VeloDBコンソールからexternal IDを貼り付けます。
- 作成したポリシーをアタッチします。
- ロールに名前を付け(例:
AllowVeloDBCrossAccountAccess)、作成します。 - VeloDBコンソール用にRole ARNをコピーします。
VPCとサブネット
VeloDBのネットワーク要件に適合するVPCは、BYOCウェアハウスの前提条件です。
注意 VeloDBウェアハウスは現在シングルAZデプロイメントをサポートしています。パブリックサブネット1つとプライベートサブネット1つの計2つのサブネットを推奨します。VeloDBはプライベートサブネットにデプロイされます。
-
管理者としてAWS VPC Consoleにサインインします。
-
対象リージョンを選択し、Create VPCをクリックします。
-
Resources to create: VPC and more。
-
これらのフィールドを調整します(その他はデフォルトのまま):
Field Value Name tag 例: velodb-projectIPv4 CIDR block お好みの開始IPとサイズ。 Number of Availability Zones 1 Number of public subnets 1 Number of private subnets 1 NAT gateways In 1 AZ VPC Endpoints S3 Gateway(NAT料金を削減し、S3にプライベートアクセス) -
Create VPCをクリックし、ワークフローが完了したらView VPCをクリックします。



セキュリティグループ
セキュリティグループは、関連するAWSリソースへのトラフィックを制御する仮想ファイアウォールです。BYOCには通常2つのセキュリティグループが必要で、1つはVeloDB EC2インスタンス用、もう1つはVPCインターフェースエンドポイント用です。
EC2用
- VPC Consoleで、Security groups → Create security groupに移動します。
- 名前を付け(例:
velodb-server-sg)、VPCを選択します。 - インバウンドルールを追加します:
- Rule 1: Type All TCP、Source this security group。
- Rule 2: Type Custom TCP、Port range 8000-10000、Sourceはウェアハウスに到達する必要があるVPCのCIDR。
- アウトバウンドルールはデフォルトのまま(すべてのアウトバウンドを許可)にします。
- Save rulesをクリックし、VeloDBコンソール用にSecurity group IDをコピーします。
VPCエンドポイント用
- VPC Consoleで、Security groups → Create security groupに移動します。
- 名前を付け(例:
vpce-sg-for-velodb)、VPCを選択します。 - 上記と同じインバウンドルールを追加します:
- Rule 1: Type All TCP、Source this security group。
- Rule 2: Type Custom TCP、Port range 8000-10000、Sourceはウェアハウスに到達する必要があるVPCのCIDR。
- アウトバウンドルールはデフォルトのままにします。
- Save rulesをクリックします。
VeloDBへのプライベートエンドポイント
BYOCトラフィックをAWSバックボーン上で維持するために、ウェアハウスがパブリックインターネットではなくPrivateLinkを介してVeloDB Cloudサービスと通信できるようプライベートエンドポイントを作成します。
-
VPC Consoleで、Endpoints → Create endpointに移動します。
-
以下を入力します:
Field Value Name 例: vpce-for-velodbService category PrivateLink Ready partner services Service name 以下のリージョン表から。Verify serviceをクリック:「Service name verified」と表示されるはずです。 VPC エンドポイントを作成するVPC。 Subnets エンドポイントENIが存在すべきプライベートサブネット。 Security group 上記で作成したVPCエンドポイント用セキュリティグループ(例: vpce-sg-for-velodb)。Policy Full access(一般的)。 -
Create endpointをクリックします。
VeloDBプライベートエンドポイントサービス名
| AWS Region | Service Name |
|---|---|
| us-east-1 | com.amazonaws.vpce.us-east-1.vpce-svc-0fb96af7d8cd84d4d |
| us-west-2 | com.amazonaws.vpce.us-west-2.vpce-svc-0709eceab1c84431a |
| eu-west-1 | com.amazonaws.vpce.eu-west-1.vpce-svc-027fb01a146da1e29 |
| ap-southeast-1 | com.amazonaws.vpce.ap-southeast-1.vpce-svc-06e619c006c767a35 |
| ap-east-1 | com.amazonaws.vpce.ap-east-1.vpce-svc-07c3dac48f26cc10a |
| me-south-1 | com.amazonaws.vpce.me-south-1.vpce-svc-0f51549e7949898ca |
| eu-central-1 | com.amazonaws.vpce.eu-central-1.vpce-svc-0b44881fddef6b599 |
| ap-southeast-7 | com.amazonaws.vpce.ap-southeast-7.vpce-svc-0378cb9082f6839fd |
| me-central-1 | com.amazonaws.vpce.me-central-1.vpce-svc-01bb92d635d16039f |
S3ゲートウェイエンドポイント
S3ゲートウェイエンドポイントは、VPC内のインスタンスにS3へのプライベート接続を提供し、パブリックインターネットを回避してNATゲートウェイ料金を削減します。
-
VPC Consoleで、Endpoints → Create endpointに移動します。
-
以下を入力します:
Field Value Name 例: vpce-for-s3-gatewayService category AWS services Services S3を検索し、タイプがGatewayのcom.amazonaws.{region}.s3を選択。VPC エンドポイントを作成するVPC。 Route tables プライベートサブネットに関連するルートテーブル。 Policy Full accessまたはCustom。 -
Create endpointをクリックします。
クロスアカウントS3アクセス用IAMロール(Catalogsインテグレーション)
異なるアカウントのS3バケットから読み取るためにCatalogsインテグレーションを使用する予定がある場合、対象アカウントでIAMロールを作成し、VeloDBがそれを引き受ける権限を付与します。
-
対象のAWSアカウントで、IAM → Roles → Create roleを開きます。

-
Custom trust policyを選択し、
<velodb-role-arn>をVeloDBウェアハウスのIAM Role ARNに置き換えます:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<velodb-role-arn>"
},
"Action": "sts:AssumeRole"
}
]
} -
ロールに付与したい権限ポリシーをアタッチし、Nextをクリックします。

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

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