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

Deployment Credentialの作成

deployment credentialは、VeloDBがお客様のAWSアカウント内でコンピュートリソースを起動するためのアクセス権限を提供します。この手順では、アクセスポリシーを持つクロスアカウントIAMロールを作成する必要があります。

前提条件

Data Credentialを作成済みで、Data Credentialセクションでバケット名とサービスIAMロールのARNを取得していること。

ステップ1: IAMポリシーの作成

クロスアカウントアクセス権限を細かく制御するため、まずクロスアカウントIAMロール用のIAMポリシーを準備する必要があります。以下に詳細な手順を示します。

  1. 管理者権限を持つユーザーとしてAWS IAM Consoleにログインします。

  2. サイドバーのPoliciesタブをクリックします。

  3. Create policyボタンをクリックします。

  4. ポリシーエディターでJSONタブをクリックします。

  5. 以下のアクセスポリシーをエディターにコピー&ペーストします。その後、ポリシー内のプレースホルダーを実際の値に置き換えてください。

    • <YOUR-AWS-ACCOUNT-ID>: お客様のAWSアカウントID。
    • <YOUR-BUCKET-NAME>: Data Credentialセクションで準備したS3バケット名。
    • <YOUR-ROLE-NAME>: Data Credentialセクションで作成したサービスIAMロール名。

    注記 VeloDBウェアハウス作成ウィザードで、Data Credentialセクションを完了してDeployment Credentialの設定に進む際、コンソールが自動的にすぐに使用可能なアクセスポリシーを生成します。このポリシーを、変更やプレースホルダーの手動置換を行うことなく、直接IAMポリシーエディターにコピー&ペーストできます。

    {
    "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"
    }
    }
    }
    ]
    }
  6. Nextボタンをクリックします。

  7. Nameフィールドに、ポリシー名を入力します。(例:AllowVeloDBCrossAccountAccess)

  8. Create policyをクリックします。

ステップ 2: クロスアカウントIAMロールの作成

  1. AWS IAMコンソールに戻ります。
  2. サイドバーのRolesタブをクリックします。
  3. Create roleをクリックします。
    1. Trusted Entity タイプ: AWS accountを選択します。
    2. Another AWS accountを選択します。
    3. Account IDフィールドに、VeloDBアカウントID: 757278738533を入力します。
    4. External IDフィールドに、VeloDBコンソールからコピーしたVeloDB external idを入力します。
    5. Add permissionsステップで、ステップ 1で作成したポリシーを選択します。
    6. Nextボタンをクリックします。
    7. ロール名を入力します。(例:AllowVeloDBCrossAccountAccess)
    8. Create roleをクリックします。
    9. ロール概要で、Role ARNをコピーしてVeloDBコンソールに追加します。