Lovable한국어 문서

클라우드 데이터 웨어하우스인 Amazon Redshift에 앱을 연결하여 SQL 쿼리를 실행하고 Lovable 앱에서 결과를 읽습니다.

Amazon Redshift에 앱 연결하기

클라우드 데이터 웨어하우스인 Amazon Redshift에 앱을 연결하여 SQL 쿼리를 실행하고 Lovable 앱에서 웨어하우스 결과를 읽습니다.

Amazon Redshift는 클라우드 데이터 웨어하우스입니다. Amazon Redshift connector를 사용하면 Lovable 앱이 Redshift Data API를 통해 SQL 문을 실행하고 결과를 읽을 수 있으므로, 데이터베이스 연결을 관리하지 않고도 웨어하우스를 기반으로 대시보드, 보고서, 내부 도구를 빌드할 수 있습니다. Provisioned cluster와 Redshift Serverless workgroup을 모두 지원합니다.

Amazon Redshift는 app + chat connector로 제공됩니다. 하나의 공유 연결을 빌드 중 채팅과 게시된 앱 모두에서 사용할 수 있습니다.

Amazon Redshift를 사용하면 앱에서 다음을 수행할 수 있습니다.

  • Redshift cluster와 serverless workgroup에서 SQL 쿼리를 실행합니다.
  • 쿼리 결과, 스키마, 테이블 메타데이터를 읽습니다.
  • 문을 비동기로 실행하고 완료될 때까지 상태를 확인합니다.
  • Enterprise 데이터 웨어하우스 데이터를 Lovable 앱에 통합합니다.

Redshift Data API는 비동기 방식입니다. 앱이 문을 제출하고 완료될 때까지 상태를 확인한 다음 결과를 가져옵니다(보통 수 초 이내). Lovable이 이 흐름을 자동으로 생성합니다.

일반적인 사용 사례와 앱 예시

Lovable 앱에서 provisioned cluster 또는 serverless workgroup의 매출 지표, 사용량 집계, 테이블 메타데이터 같은 웨어하우스 데이터가 필요할 때 Amazon Redshift를 사용하세요.

앱 예시프롬프트 예시설명
분석 대시보드Amazon Redshift를 사용하여 웨어하우스의 일일 매출과 활성 사용자를 보여주는 대시보드를 만들어 주세요.웨어하우스 테이블을 실시간 대시보드로 전환합니다.
앱이 Redshift에서 집계 쿼리를 실행하고 결과를 차트로 렌더링합니다.
내부 쿼리 consoleAmazon Redshift를 사용하여 팀에서 SQL을 실행하고 결과를 CSV로 다운로드할 수 있는 내부 도구를 만들어 주세요.팀에 간편한 쿼리 console을 제공합니다.
앱이 문을 제출하고 완료될 때까지 상태를 확인한 다음 CSV 내보내기와 함께 결과를 렌더링합니다.
고객 사용량 portalAmazon Redshift를 사용하여 각 고객이 웨어하우스에서 자신의 월간 사용량을 확인할 수 있는 페이지를 만들어 주세요.웨어하우스에서 고객별 분석을 제공합니다.
앱이 고객별로 쿼리 결과를 필터링하고 사용량 요약을 렌더링합니다.
KPI 보고서Amazon Redshift를 사용하여 이번 주 가입과 주문을 지난주와 비교하는 주간 보고서를 만들어 주세요.웨어하우스 쿼리로 정기 보고서를 게시합니다.
앱이 필요할 때 비교 쿼리를 실행하고 읽기 쉬운 보고서로 결과를 제공합니다.
Data catalog 브라우저Amazon Redshift를 사용하여 데이터베이스, 스키마, 테이블 목록을 표시하는 브라우저를 만들어 주세요.웨어하우스를 탐색할 수 있게 합니다.
앱이 데이터베이스와 테이블 메타데이터를 나열하여 어떤 데이터가 있고 어떻게 구성되는지 보여줍니다.
운영 monitorAmazon Redshift를 사용하여 매일 아침 웨어하우스의 주문 및 재고 지표를 보여주는 도구를 만들어 주세요.팀이 운영 지표를 계속 확인할 수 있게 합니다.
앱이 일정에 따라 웨어하우스를 조회하고 중요한 수치를 강조합니다.

Amazon Redshift 연결의 작동 방식

각 Amazon Redshift 연결은 하나의 AWS region, IAM 자격 증명 세트, 그리고 Redshift Serverless workgroup 또는 provisioned cluster 중 하나의 대상에 연결됩니다. Amazon Redshift를 연결하면 Lovable connector gateway가 자격 증명으로 모든 Data API 요청에 서명합니다. 자격 증명은 서버에 유지되며 게시된 앱에 전달되지 않습니다.

Lovable workspace 내에서는 다음과 같이 작동합니다.

  • Amazon Redshift 연결을 여러 개 만들 수 있습니다.
  • 각 연결은 특정 region을 대상으로 하며 자체 IAM 자격 증명을 사용합니다.
  • 각 연결은 Redshift Serverless 또는 provisioned cluster 중 하나만 대상으로 합니다. 둘 다 사용하려면 각각 연결을 만드세요.
  • 하나의 workspace에 있는 여러 프로젝트가 동일한 연결을 사용할 수 있습니다.

따라서 환경(예: production과 staging)을 분리하거나 팀별로 접근 범위를 지정하기 쉽습니다.

Amazon Redshift는 안전한 자격 증명 처리와 자동 요청 서명을 위해 Lovable의 gateway architecture를 사용합니다. 인증 및 사용량 제한에 관한 자세한 내용은 Gateway 기반 connector를 참고하세요.

Connector는 읽기 전용 접근을 강제하지 않습니다. SELECTDROP TABLE이든 모든 쿼리가 동일한 redshift-data:ExecuteStatement 권한을 사용하므로 IAM으로 읽기와 쓰기를 구분할 수 없습니다. 실제로 제어하려면 데이터베이스 grant를 사용해야 합니다. 연결을 읽기 전용으로 제한하기를 참고하세요.

Amazon Redshift 연결하기

Amazon Redshift 연결을 만들 수 있는 사용자는 플랜과 workspace 설정에 따라 달라집니다. Free, Pro, Business 플랜에서는 app + chat connector가 기본으로 제공됩니다. Enterprise 플랜에서는 처음에 사실상 비활성화되어 있습니다. Admin이 Connectors → Admin settings → App + chat connectors에서 변경하기 전까지 연결과 client를 만들 수 있는 사용자의 기본값이 No one이기 때문입니다.

연결을 만든 후 사용할 프로젝트에 연결을 연결할 수 있습니다. 프로젝트에서 빌드하는 사용자는 누구나 채팅에서 Lovable에 프로젝트를 연결해 달라고 요청할 수 있습니다.

사전 준비

Amazon Redshift를 연결하기 전에 다음을 준비하세요.

  • Redshift provisioned cluster 또는 serverless workgroup이 있는 AWS 계정
  • 아래에 나열된 Redshift Data API 권한이 있는 IAM user
  • Cluster 또는 workgroup이 실행되는 AWS region
  • Lovable workspace에서 연결 생성 권한(연결과 client를 만들 수 있는 사용자 참고)

이 connector를 통한 모든 쿼리는 사용자의 AWS 계정에서 실행되며, Redshift 사용량은 Lovable이 아닌 AWS에서 직접 청구합니다.

1단계: Redshift Data API 접근 권한이 있는 IAM user 만들기

Lovable에서 연결을 설정하기 전에 필요한 최소 권한이 있는 IAM user를 AWS에서 만드세요. Redshift Data API 접근 권한은 앱이 호출하는 redshift-data 작업, 데이터베이스 인증 방식에 따른 자격 증명 가져오기 작업, Redshift Serverless에서 앱이 workgroup을 찾는 데 필요한 작업의 세 부분으로 구성됩니다.

AWS IAM console 열기

AWS IAM console로 이동하여 Lovable에서 사용할 새 IAM user를 만들거나 기존 user를 사용합니다.

Redshift policy 연결

다음 권한으로 inline policy 또는 managed policy를 만들어 연결합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RedshiftDataApi",
      "Effect": "Allow",
      "Action": [
        "redshift-data:ExecuteStatement",
        "redshift-data:DescribeStatement",
        "redshift-data:GetStatementResult",
        "redshift-data:ListStatements",
        "redshift-data:ListDatabases",
        "redshift-data:ListSchemas",
        "redshift-data:ListTables",
        "redshift-data:DescribeTable"
      ],
      "Resource": "*"
    },
    {
      "Sid": "FetchDbCredentials",
      "Effect": "Allow",
      "Action": [
        "redshift-serverless:GetCredentials",
        "redshift:GetClusterCredentials",
        "redshift:GetClusterCredentialsWithIAM"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DiscoverServerlessWorkgroups",
      "Effect": "Allow",
      "Action": ["redshift-serverless:ListWorkgroups"],
      "Resource": "*"
    }
  ]
}

연결 방식과 일치하는 자격 증명 가져오기 작업만 유지하세요. 다음은 같은 기능의 구버전과 신버전이 아니라 서로 다른 인증 경로입니다.

  • Redshift Serverless: redshift-serverless:GetCredentials
  • Provisioned cluster, 데이터베이스 user로 연결(연결에 Database user 설정): redshift:GetClusterCredentials
  • Provisioned cluster, IAM identity로 연결(Database user를 설정하지 않아 Redshift가 IAM identity에서 데이터베이스 user 이름을 파생): redshift:GetClusterCredentialsWithIAM
  • AWS Secrets Manager(쿼리에서 secret ARN을 전달하는 경우 두 배포 유형 모두): 위 작업 대신 해당 secret의 secretsmanager:GetSecretValue

일치하는 자격 증명 가져오기 작업이 없으면 모든 문이 AccessDeniedException으로 실패합니다. 앱에서 여러 문으로 구성된 batch를 실행하는 경우에만 redshift-data:BatchExecuteStatement를 추가하세요.

redshift-serverless:ListWorkgroups 작업을 사용하면 앱이 다른 serverless workgroup을 나열할 수 있습니다. 앱에서 연결에 설정된 workgroup만 조회하거나 provisioned cluster를 사용한다면 이 문을 제거하세요. 앱에서 필요하다면 redshift-serverless:GetWorkgroupredshift-serverless:ListNamespaces도 추가하세요.

이 policy는 연결에서 호출할 수 있는 Data API 작업을 제어합니다. 해당 작업이 실행하는 SQL은 제어할 수 없으므로 연결을 읽기 전용으로 만드는 수단이 아닙니다. 연결을 읽기 전용으로 제한하기를 참고하세요.

Access key 생성

IAM user의 Security credentials tab에서 access key를 만듭니다. 다음 단계에서 필요하므로 Access key IDSecret access key를 모두 저장하세요.

Secret access key는 한 번만 표시되며 비밀번호와 같은 역할을 합니다. 안전하게 보관하고 저장소에 commit하거나 공개적으로 공유하지 마세요. 분실하면 새 access key pair를 만드세요.

자세한 내용은 AWS 문서의 Amazon Redshift Data API 사용하기를 참고하세요.

2단계: Amazon Redshift를 Lovable에 연결하기

서로 다른 IAM 자격 증명을 사용하여 여러 연결을 만들 수 있습니다.

Connectors에서 Amazon Redshift 열기

Connectors를 열고 Amazon Redshift를 선택합니다. Catalog를 여는 다른 위치는 Connector 찾기를 참고하세요.

연결 추가

Add connection을 클릭합니다.

연결 구성

  1. Display name: 연결 이름을 입력합니다. 예: Redshift Prod. 이 이름은 Lovable 내에서 연결을 식별하는 데만 사용됩니다.
  2. Deployment type: Redshift 실행 방식을 선택합니다. 이 선택에 따라 아래에서 입력할 field가 결정됩니다.
    • Serverless (기본값): Redshift Serverless workgroup을 조회합니다.
    • Provisioned cluster: Provisioned Redshift cluster를 조회합니다.
  3. AWS region: Cluster 또는 workgroup이 실행되는 region을 선택합니다. 기본값은 **US East (N. Virginia, us-east-1)**입니다. IAM 자격 증명은 전역이지만 Redshift resource는 region별로 존재합니다. Region이 잘못된 연결도 검증은 통과하지만 모든 쿼리가 not-found 오류로 실패합니다.
  4. Access key ID: 이전 단계에서 만든 IAM access key ID를 붙여넣습니다.
  5. Secret access key: Access key ID와 짝을 이루는 IAM secret access key를 붙여넣습니다.
  6. Workgroup(Serverless 전용): 앱 쿼리의 대상 Redshift Serverless workgroup을 입력합니다. 예: my-workgroup.
  7. Cluster identifier(provisioned cluster 전용): 앱 쿼리의 대상 cluster를 입력합니다. 예: my-cluster. Redshift console에서 찾거나 aws redshift describe-clusters --region <region>을 실행하세요.
  8. Database: 쿼리가 기본적으로 실행될 데이터베이스를 입력합니다. 예: dev.
  9. Database user(선택 사항, provisioned cluster 전용): 앱이 연결할 데이터베이스 user를 입력합니다. 예: lovable_readonly. 가능하면 전용 읽기 전용 user를 사용하세요. IAM identity로 연결하려면 비워 두세요. 이 경우 redshift:GetClusterCredentials 대신 redshift:GetClusterCredentialsWithIAM이 필요합니다.

표시되는 field는 Deployment type에 따라 달라집니다. Serverless를 선택하면 Workgroup을, Provisioned cluster를 선택하면 Cluster identifier와 선택적으로 Database user를 입력합니다. 표시되는 field 중 Database user를 제외한 모든 항목은 필수입니다. 나중에 연결을 수정하여 deployment type을 전환할 수 있습니다.

연결 사용 권한 선택

Who can use this connection에서 workspace 내 연결 사용 권한을 결정합니다.

  • Only you (기본값): 연결을 만든 사용자만 연결과 관련 데이터를 사용할 수 있습니다.
  • Invite specific people: 본인과 명시적으로 추가한 workspace 멤버만 연결과 관련 데이터를 사용할 수 있습니다.
  • Invite entire workspace: Invite entire workspace를 클릭하여 Lovable workspace의 모든 사용자가 연결을 사용할 수 있도록 합니다.

자세한 내용은 연결과 client를 사용할 수 있는 사용자를 참고하세요.

연결

Connect를 클릭합니다. Lovable은 region의 문 목록을 가져와 자격 증명을 확인합니다. 확인에 실패하면 key가 올바른지, region이 cluster 또는 workgroup과 일치하는지, IAM policy에 redshift-data:ListStatements가 포함되어 있는지 확인하세요.

검증에서는 redshift-data:ListStatements만 확인하므로, 연결 검증을 통과하고도 첫 쿼리가 실패할 수 있습니다. 쿼리가 AccessDeniedException을 반환하면 IAM policy에 인증 경로에 맞는 자격 증명 가져오기 작업이 빠졌을 가능성이 높습니다(1단계 참고).

연결이 완료되면 프로젝트에서 빌드하는 사용자는 누구나 구성된 연결 접근 권한에 따라 채팅에서 Lovable에 프로젝트를 Amazon Redshift에 연결해 달라고 요청할 수 있습니다. 이후 Lovable 앱에서 웨어하우스에 SQL 쿼리를 실행하고 결과를 사용할 수 있습니다.

연결을 읽기 전용으로 제한하기

IAM은 연결에서 호출할 수 있는 Data API 작업을 제어합니다. 하지만 해당 작업이 실행하는 SQL은 제어할 수 없습니다. 단순한 SELECT를 포함한 모든 쿼리에 redshift-data:ExecuteStatement가 필요하며, 동일한 권한으로 DROP TABLE도 실행됩니다. 쓰기는 Redshift 데이터베이스 grant로 제한하고, IAM으로 연결에서 사용할 데이터베이스 identity를 고정하세요.

연결에서 사용하는 데이터베이스 user 찾기

Grant는 데이터베이스 user에 연결되므로 먼저 연결의 문이 어떤 user로 실행되는지 확인하세요. Deployment type과 연결의 Database user 설정 여부에 따라 달라집니다.

연결자격 증명 가져오기 작업실행 identity
Serverlessredshift-serverless:GetCredentialsIAM:<your-iam-user-name>
Provisioned, Database user 비어 있음redshift:GetClusterCredentialsWithIAMIAM:<your-iam-user-name>
Provisioned, Database user 설정됨redshift:GetClusterCredentials지정한 user

IAM: 경로에서는 Redshift가 IAM identity에서 데이터베이스 user를 파생하므로, 이름이 lovable-redshift인 IAM user는 데이터베이스 user IAM:lovable-redshift가 됩니다. 연결에서 문을 처음 실행할 때 Redshift가 이를 자동 생성하므로 grant를 적용하기 전에 한 번 연결하세요.

SQL에서 IAM: 이름은 항상 큰따옴표로 묶으세요. Colon은 따옴표 없는 식별자에 사용할 수 없으며 따옴표 없는 식별자는 소문자로 변환되므로, IAM:lovable-redshiftiam:lovable-redshift가 되어 일치하지 않습니다.

읽기 전용 접근 권한 부여

Database user를 사용하는 provisioned 경로에서는 먼저 user를 만드세요. Data API가 자동으로 만들지 않습니다.

CREATE USER lovable_readonly PASSWORD DISABLE;

PASSWORD DISABLE은 Data API가 사용하는 임시 IAM 자격 증명으로만 user가 로그인할 수 있다는 의미입니다.

그런 다음 읽기 권한을 부여합니다. 두 IAM: 경로에서는 위 CREATE USER를 건너뛰고 lovable_readonly 대신 "IAM:lovable-redshift"를 사용하세요.

GRANT USAGE ON SCHEMA analytics TO lovable_readonly;
GRANT SELECT FOR TABLES IN SCHEMA analytics TO lovable_readonly;

GRANT ... FOR TABLES IN SCHEMA는 범위 지정 권한입니다. 생성한 사용자와 관계없이 스키마의 현재 및 향후 모든 테이블에 적용됩니다. 앱이 읽는 각 스키마에서 두 문을 반복하세요. Redshift에는 데이터베이스 수준의 CONNECT 권한이 없으므로 추가로 부여할 권한은 없습니다.

Redshift는 PUBLIC group을 통해 모든 user에게 CREATETEMP 권한을 부여하므로 SELECT grant만 있는 user도 public 스키마에 테이블을 만들 수 있습니다. 읽기 전용 user가 영구 또는 임시 테이블을 만들 수 없도록 다음 기본 권한을 회수하세요. 이 문은 해당 user만이 아니라 데이터베이스의 모든 user에게 적용됩니다.

REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE TEMP ON DATABASE dev FROM PUBLIC;

IAM에서 identity 고정하기

Database user를 사용하는 provisioned 경로에서는 IAM으로 모든 문이 해당 user를 사용하도록 강제할 수 있습니다. 범위를 해당 user로 지정한 redshift:GetClusterCredentials를 부여하고 redshift:GetClusterCredentialsWithIAM은 제외하세요.

{
  "Sid": "FetchDbCredentials",
  "Effect": "Allow",
  "Action": "redshift:GetClusterCredentials",
  "Resource": "arn:aws:redshift:us-east-1:111122223333:dbuser:my-cluster/lovable_readonly"
}

데이터베이스 user를 생략하거나 다른 user를 지정한 쿼리는 AccessDeniedException으로 실패합니다. Serverless와 IAM identity 경로에서는 데이터베이스 identity 자체가 IAM user이므로 이에 상응하는 방법이 없습니다. 연결마다 전용 IAM user를 사용하고 필요한 권한만 부여하세요.

Provisioned cluster와 serverless workgroup

연결에는 Redshift 배포 방식과 조회 대상을 기록합니다. Serverless의 경우 WorkgroupDatabase, provisioned cluster의 경우 Cluster identifier, Database, 선택적으로 Database user입니다. 모든 Data API 요청은 여전히 대상을 지정하며, Lovable이 생성하는 코드에 이 값을 기록하므로 프롬프트마다 반복할 필요가 없습니다. 앱의 서버 코드에서는 WorkgroupDatabase userREDSHIFT_WORKGROUPREDSHIFT_DB_USER 환경 변수로 읽을 수도 있습니다.

Connector는 요청 protocol이 다른 Redshift management API(예: DescribeClusters)를 routing하지 않습니다. Cluster identifier는 Redshift console에서 찾거나 aws redshift describe-clusters --region <region>을 실행하세요.

제한 사항

Amazon Redshift connector는 다음을 수행할 수 없습니다.

  • Redshift Data API와 Redshift Serverless 이외의 AWS 서비스 호출. Gateway는 RedshiftData.*RedshiftServerless.* 작업만 전달하므로 앱이 이 연결을 통해 S3 object를 읽거나 다른 AWS resource를 관리할 수 없습니다.
  • DescribeClusters 같은 Redshift management API로 cluster 목록 조회. Redshift console 또는 AWS CLI에서 cluster identifier를 찾으세요.
  • 읽기 전용 접근 강제. 연결은 데이터베이스 identity에 허용된 모든 SQL을 실행하므로 데이터베이스 grant로 범위를 지정해야 합니다. 연결을 읽기 전용으로 제한하기를 참고하세요.
  • 문을 동기 방식으로 실행. 결과는 Redshift에서 문 처리를 마친 후에만 사용할 수 있습니다.
  • Access key 자동 갱신 또는 교체. 교체하려면 IAM에서 새 access key를 만들고 Lovable 연결을 업데이트하세요.
  • 최종 사용자별 AWS login 지원. 각 연결은 연결된 모든 프로젝트에서 공유되는 하나의 IAM 자격 증명 세트를 나타냅니다.

Amazon Redshift 연결 관리하기

연결은 Connectors에서 관리합니다. **Amazon Redshift**을 선택한 다음 연결을 여세요.

  • Unlink projects를 사용하면 다른 프로젝트에서 연결을 계속 사용할 수 있도록 유지하면서 특정 프로젝트의 Amazon Redshift 접근 권한만 제거할 수 있습니다. 단계별 안내는 연결에서 프로젝트 연결 해제하기를 참고하세요.
  • Delete the connection을 사용하면 workspace에서 연결을 완전히 제거합니다. 삭제는 영구적입니다. 연결된 모든 프로젝트에서 자격 증명이 제거되고, 새 연결을 추가할 때까지 Amazon Redshift을 사용하는 앱 기능이 작동하지 않습니다. 단계와 삭제 권한은 연결 삭제하기를 참고하세요.

On this page