데이터 히스토리북 (Data History Book)

[Databricks] Private VPC 생성하기 (with AWS Cloud) 본문

데이터 엔지니어링/Spark

[Databricks] Private VPC 생성하기 (with AWS Cloud)

Mini.J 2023. 12. 19. 23:40

Private Vpc

Private vpc는 흔히 고객 관리형 VPC라고 할 수 있으며 오늘은 고객의 VPC에서 Databricks 작업 영역을 만들어 볼것이다.

https://docs.databricks.com/en/administration-guide/cloud-configurations/aws/customer-managed-vpc.html

 

Databricks documentation

 

docs.databricks.com

 

기본적으로 데이터브릭스는 클라우드 위에서 존재하기 때문에, 클러스터 생성과 스토리지 또한 클라우드 위에

존재한다는 것을 알아야 한다.

우선, 데이터브릭스 작업영역을 만들기 위해서 3가지 차례로 진행하면 되는데,

1. 자격증명구성

2. 저장소 구성

3. 네트워크 구성이다.

1. 자격 증명 구성

 

iam 역할을 만들고, 데이터브릭스가 연결되어 있는 계정과 그 아래의 계정 서드파티 id를 옵션에 넣어준다

 

그 다음, 액세스 정책을 만드는데, 인라인 정책을 생성해서 생성한 iam 역할과 연결한다

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1403287045000",
            "Effect": "Allow",
            "Action": [
                "ec2:AssociateIamInstanceProfile",
                "ec2:AttachVolume",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CancelSpotInstanceRequests",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteTags",
                "ec2:DeleteVolume",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstances",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribePrefixLists",
                "ec2:DescribeReservedInstancesOfferings",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSpotInstanceRequests",
                "ec2:DescribeSpotPriceHistory",
                "ec2:DescribeSubnets",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs",
                "ec2:DetachVolume",
                "ec2:DisassociateIamInstanceProfile",
                "ec2:ReplaceIamInstanceProfileAssociation",
                "ec2:RequestSpotInstances",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:RunInstances",
                "ec2:TerminateInstances",
                "ec2:DescribeFleetHistory",
                "ec2:ModifyFleet",
                "ec2:DeleteFleets",
                "ec2:DescribeFleetInstances",
                "ec2:DescribeFleets",
                "ec2:CreateFleet",
                "ec2:DeleteLaunchTemplate",
                "ec2:GetLaunchTemplateData",
                "ec2:CreateLaunchTemplate",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:ModifyLaunchTemplate",
                "ec2:DeleteLaunchTemplateVersions",
                "ec2:CreateLaunchTemplateVersion",
                "ec2:AssignPrivateIpAddresses",
                "ec2:GetSpotPlacementScores"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "spot.amazonaws.com"
                }
            }
        }
    ]
}

2. 저장소 구성

aws에서 S3 버킷을 생성해놓고, 데이터브릭스에서는 두번째 스텝인 저장소 구성에 이를 추가한다.

정책을 복사해서, 생성했던 aws s3 버킷의 버킷 정책에 붙여넣기 한다

3. 네트워크 구성

세번째 네트워크 구성이다. 네트워크 구성을 하기전, vpc endpoint를 먼저 연결해줘야 한다.

https://docs.databricks.com/administration-guide/account-settings-e2/networks.html

https://docs.databricks.com/administration-guide/cloud-configurations/aws/customer-managed-vpc.html#security-groups

 

Databricks documentation

 

docs.databricks.com

일단 aws vpc를 먼저 구성해야 하는데, 화자는 quickstart로 vpc를 구성했다

private vpc에다 작업영역을 만들것이기 때문에, 서브넷 private 2개를 고른다.

그 후 보안그룹 생성을 한뒤, 생성했던 databricks-vpc와 연결시켜주고

인바운드,아웃바운드는 둘다 똑같이 입력하며 포트를 열어준다.

다음 엔드포인트 설정이다.

https://docs.databricks.com/resources/supported-regions.html#privatelink

 

Databricks documentation

 

docs.databricks.com

vpc endpoint에서 클러스터와 rest api를 연결할텐데, 서비스 이름에는 databricks 공식문서에도 나와있는 것을 입력해준뒤

서비스 확인을 눌러주면 된다.

위의 네모박스에 들어가있는 vpce-svc라고 되어있는 부분과 아래의 서비스 이름에서 본 바와 같이 같다는 것을 확인할 수 있다

이후, 네트워크 구성과 엔드포인트 설정까지 마친 뒤, 개인 액세스 설정의 front를 연결해준 다음, 워크스페이스를 만들어주면 된다.

반응형