BigQuery Omni - AWS 연결

김민형·2022년 9월 6일
1

GCP - Data

목록 보기
30/44

AWS는 IAM 역할을 통해 사용자에게 권한을 부여하기 때문에 빅쿼리용 AWS IAM 역할을 만들어서 빅쿼리에 할당해줘야 연결할 수 있다.

우선 BigQuery Connection API 사용이 설정되어 있어야 하고 빅쿼리에서 연결할 s3버킷을 하나 미리 생성해준다.

S3 버킷을 생성할 때 퍼블릭 액세스 차단 설정이 되어 있어야 하고 서버측 암호화를 활성화 해줘야 한다.

BigQuery용 AWS IAM 정책 생성

S3 버킷의 객체들을 볼 수 있고 그 객체들을 불러올 수 있는 s3:ListBucket, s3:GetObejct 권한을 allow하는 정책을 만들어줄 것이다.

AWS IAM에서 정책 생성

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::<BUCKET_NAME>/*",
                "arn:aws:s3:::<BUCKET_NAME>"
            ]
        }
    ]
}

만약 데이터를 S3 버킷으로 내보내는 경우 s3:PutObject 권한도 필요하다. 하지만 여기선 해주지 않았다.
(어차피 BigQuery Omni로 작업을 하려면 슬롯이 할당되어야 한다.)

BigQuery용 AWS IAM 역할 생성

빅쿼리에서 S3 버킷에 접근할 수 있는 역할을 만들어 줄 것이다.

AWS IAM 에서 역할 생성

Audience 값은 역할을 생성한 후 빅쿼리에서 이 역할을 갖고 AWS와 연결했을 시 나오는 BigQuery Google ID 값으로 나중에 바꿔줄 것이다.

앞서 만들어줬던 정책을 연결하여 생성해준다.

BigQuery AWS 연결

만들어준 역할에 대한 ARN을 복사해둔다

Connection Resource 생성

생성하고 나면 외부 연결이 잡히고 아래 사진과 같이 BigQuery Google ID 가 나온다.

웹 자격증명으로 특정 작업증명 공급자에 대한 역할을 만들어주면 그에 대한 신뢰 정책이 생성되고 그 안에 해당 공급자에 대한 인증값이 필요하다. 그게 바로 위의 사진에 BigQuery Google ID이고 이 값을 신뢰정책에 넣어줄 것이다.


원래는 처음 만들때 넣어줬던 Audience값 0000이었다.
BigQuery Google ID값을 넣어주면 연결이 된다.

BigQuery Omni는 모든 작업에 대해서 슬롯이 설정되어 있어야 쿼리가 가능하지만 한 번 사용해보겠다.

S3 데이터 쿼리

S3에 내가 갖고 있던 csv파일 하나를 넣어뒀다.
Connection Resource를 만들었으므로 데이터 세트를 생성할 때 AWS 리전을 선택할 수 있다.

테이블 소스를 S3로 해주고 csv파일의 경로와 만들어준 Connection ID를 선택하여 테이블을 생성

성공

하지만 역시 쿼리를 날리면 사진과 같이 슬롯 설정에 관한 에러가 뜬다.
현재 슬롯 관련해선 나에게 권한이 없다...

profile
Solutions Architect (rlaalsgud97@gmail.com)

0개의 댓글