Cloud Storage, BigQuery Private Access - Part 1에서 이어지는 내용
Private Service Connect 엔드포인트를 연결하려면 아래의 권한들이 필요하다.
때문에 서비스 디렉토리 API, Cloud DNS API를 활성화해줘야 한다.
Private Service Connect 엔드포인트용 IP 생성
※GCP VPC의 Subnet CIDR 이외의 IP 주소 범위에서 IP 주소를 지정해야 함※
서비스 디렉토리 네임스페이스는 API를 사용설정하면 자동으로 할당된다.
이 상태에서는 AWS측에 PSC 엔드포인트의 IP 주소로의 라우팅이 없으므로 AWS에서 PSC 엔드포인트에 액세스할 수 없습니다. 따라서 BGP 세션에서 PSC 엔드포인트의 루트 정보를 AWS 측에 공지해야 함.
Cloud Router에 표시되는 모든 서브넷 공지를 클릭하고 새 커스텀 경로로 PSC 엔드포인트 IP를 추가해준다.
이렇게 하면 AWS Private Subnet 라우팅 테이블에 PSC 엔드포인트 주소가 라우팅 된다.
IP 주소 말고 googleapis.com 주소로 라우팅 해주기 위한 설정.
비공개 영역으로 DNS이름을 googleapis.com으로 지정.
다음과 같은 화면이 나올건데 레코드 세트를 추가할 것이다.
앞에 특정 단어를 붙이고(ex 서비스 명).googleapis.com을 하면 PSC 엔드포인트 IP로 라우팅되게 설정하는 것.
(사실 A레코드 유형으로 PSC 엔드포인트 IP --> *.googleapis.com 설정 하나만 추가해도 무방하다.)
AWS에서 쿼리를 하면 DNS 포워딩이 될 수신 서버 정책 생성
GCP 네트워크에 대한 수신 쿼리 전달만 허용해주면 끝이다.
이 수신 쿼리 전달 IP를 갖고 AWS Route 53 Resolver 구성을 할 것이다.
Route53 Resolver의 Outbound 엔드포인트에 대한 보안 그룹 생성.
Outbound 엔드포인트 보안그룹
엔드포인트 구성
두 가지 IP 주소를 지정해야 함.
AZ를 나누어 지정하면 되지만, 같은 AZ로 지정하는 것도 가능.
IP 주소는 "자동으로 선택된 IP 주소 사용" 선택.
(ENI의 IP 주소가 연결됨)
해당 VPC에서 googleapis.com 도메인에 대해 쿼리를 하면 대상 IP 주소(Cloud DNS 정책에서 설정한 수신 쿼리 전달 IP)로 쿼리가 전달된다.
BigQuery 접근
테이블 쿼리
Cloud Storage 접근
파일 다운로드
+2023.09 업데이트. 추가로 해당 구성을 해놓으면 GCP의 신 기능인 Vertex AI의 Gen AI 모델을 호출할 수도 있다.
아래에선 Python 코드를 통해 호출한 결과이다.
예제 코드
test.py
from vertexai.preview.language_models import ChatModel
from google.oauth2 import service_account
PROJECT_ID = "<프로젝트 ID>"
LOCATION = "us-central1" # Vertex AI의 Gen AI는 현재 US 리전에서만 사용 가능
SVC_ACCT_FILE="/home/ec2-user/test.json" # 서비스 계정 키 파일
credentials = service_account.Credentials.from_service_account_file(SVC_ACCT_FILE)
# Initialize Vertex AI SDK
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION, credentials=credentials )
chat_model = ChatModel.from_pretrained("chat-bison@001")
print(type(chat_model))
chat = chat_model.start_chat()
print(type(chat))
print(chat.send_message("""
My name is minhyoung.
"""))
print(chat.send_message("""
What's my name again?
"""))
파일 실행 결과
외부 IP가 없는 EC2에서 Vertex AI의 Gen AI 모델인 chat-bison@001를 불러온 것.
Python 코드를 보면 "My Name is minhyoung"을 전송했었고, 이에 대한 대답으로 "Hi, Minhyoung, how can I help you today?"가 왔다.
또한 "What's my name again?"을 전송했었고, 이에 대한 대답으로 "Your name is Minhyoung"를 받았다.
[Cloud Storage, BigQuery Private Access 참고]
https://dev.classmethod.jp/articles/access-from-ec2-to-bigquery-via-vpn-using-psc-part3/#toc-17
포스트 잘 봤습니당~
혹시 반대로 GCP big query에서 AWS S3로 쿼리 결과를 input할 때 VPN을 타고 통신하려면 어떻게 하면 좋을까용