

# Azure SQL 연결
<a name="aws-glue-programming-etl-connect-azuresql-home"></a>

AWS Glue for Spark를 사용하여 AWS Glue 4.0 이상 버전에서 Azure SQL Managed Instances의 테이블에서 읽고 쓸 수 있습니다. SQL 쿼리를 사용하여 Azure SQL에서 읽을 내용을 정의할 수 있습니다. AWS Glue 연결을 통해 AWS Secrets Manager에 저장된 사용자 이름 및 암호 보안 인증 정보를 사용하여 Azure SQL에 연결할 수 있습니다.

Azure SQL에 대한 자세한 내용은 [Azure SQL 설명서](https://azure.microsoft.com/en-us/products/azure-sql)를 참조하십시오.

## Azure SQL 연결 구성
<a name="aws-glue-programming-etl-connect-azuresql-configure"></a>

AWS Glue에서 Azure SQL에 연결하려면 Azure SQL 보안 인증 정보를 만들어 AWS Secrets Manager 암호에 저장한 다음 해당 암호를 Azure SQL AWS Glue 연결에 연결해야 합니다.

**Azure SQL에 대한 연결을 구성하는 방법:**

1. AWS Secrets Manager에서 Azure SQL 보안 인증을 사용하여 보안 암호를 생성합니다. Secrets Manager에서 보안 암호를 생성하려면 AWS Secrets Manager 설명서의 [Create an AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html)에서 제공하는 자습서를 따릅니다. 보안 암호를 생성한 후에는 다음 단계를 위해 보안 암호 이름, *secretName*을 유지합니다.
   + **키/값 페어**를 선택하면 값 *azuresqlUsername*이 포함된 키 `user`에 대한 페어를 생성합니다.
   + **키/값 페어**를 선택하면 값 *azuresqlPassword*가 포함된 키 `password`에 대한 페어를 생성합니다.

1. AWS Glue 콘솔에서 [AWS Glue 연결 추가](console-connections.md)의 단계에 따라 연결을 생성합니다. 연결을 생성한 후에는 AWS Glue에서 이용하기 위해 연결 이름 *connectionName*을 유지합니다.
   + **연결 유형**을 선택할 때 Azure SQL를 선택합니다.
   + **Azure SQL URL을** 제공할 때는 JDBC 엔드포인트 URL을 제공하십시오.

      목록은 `jdbc:sqlserver://databaseServerName:databasePort;databaseName=azuresqlDBname;` 형식이어야 합니다.

     AWS Glue에는 다음과 같은 URL 속성이 필요합니다.
     + `databaseName` - 연결할 Azure SQL의 기본 데이터베이스입니다.

     Azure SQL 관리형 인스턴스용 JDBC URL에 대한 자세한 내용은 [Microsoft 설명서](https://learn.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=azuresqldb-mi-current)를 참조하십시오.
   + **AWS 보안 암호**를 선택할 때 *secretName*을 입력합니다.

AWS Glue Azure SQL 연결을 생성한 후에는 AWS Glue 작업을 실행하기 전에 다음 단계를 수행해야 합니다.
+ AWS Glue 작업과 연결된 IAM 역할에 *secretName*을 읽을 수 있는 권한을 부여합니다.
+ AWS Glue 작업 구성에서 **추가 네트워크 연결**로 *connectionName*을 제공합니다.

## Azure SQL 테이블에서 읽는 중
<a name="aws-glue-programming-etl-connect-azuresql-read"></a>

**사전 조건 ** 
+ 읽으려는 Azure SQL 테이블. 테이블, *databaseName*, *tableIdentifier*에 대한 식별 정보가 필요합니다.

  Azure SQL 테이블은 데이터베이스, 스키마 및 테이블 이름으로 식별됩니다. Azure SQL에 연결할 때 데이터베이스 이름과 테이블 이름을 제공해야 합니다. 스키마가 기본값인 "public"이 아닌 경우에도 스키마를 제공해야 합니다. 데이터베이스는 *connectionName*의 URL 속성을, `dbtable`을 통해 스키마 및 테이블 이름을 제공 받습니다.
+ 인증 정보를 제공하도록 구성된 AWS Glue Azure SQL 연결입니다. 인증 정보를 구성하려면 앞 절차인 *Azure SQL에 대한 연결을 구성하는 방법*의 단계를 완료하십시오. AWS Glue 연결의 이름인 *connectionName*이 필요합니다.

예: 

```
azuresql_read_table = glueContext.create_dynamic_frame.from_options(
    connection_type="azuresql",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableIdentifier"
    }
)
```

SELECT SQL 쿼리에 반환되는 결과를 필터링하는 쿼리를 제공할 수도 있습니다. `query`을 구성해야 합니다.

예:

```
azuresql_read_query = glueContext.create_dynamic_frame.from_options(
    connection_type="azuresql",
    connection_options={
        "connectionName": "connectionName",
        "query": "query"
    }
)
```

## Azure SQL 테이블에 쓰기
<a name="aws-glue-programming-etl-connect-azuresql-write"></a>

이 예제에서는 기존 DynamicFrame, *dynamicFrame*의 정보를 Azure SQL에 씁니다. 테이블에 이미 정보가 있는 경우 AWS Glue는 DynamicFrame의 데이터를 추가합니다.

**사전 조건 ** 
+ 쓰려는 Azure SQL 테이블. 테이블, *databaseName*, *tableIdentifier*에 대한 식별 정보가 필요합니다.

  Azure SQL 테이블은 데이터베이스, 스키마 및 테이블 이름으로 식별됩니다. Azure SQL에 연결할 때 데이터베이스 이름과 테이블 이름을 제공해야 합니다. 스키마가 기본값인 "public"이 아닌 경우에도 스키마를 제공해야 합니다. 데이터베이스는 *connectionName*의 URL 속성을, `dbtable`을 통해 스키마 및 테이블 이름을 제공 받습니다.
+ Azure SQL 인증 정보. 인증 정보를 구성하려면 앞 절차인 *Azure SQL에 대한 연결을 구성하는 방법*의 단계를 완료하십시오. AWS Glue 연결의 이름인 *connectionName*이 필요합니다.

예: 

```
azuresql_write = glueContext.write_dynamic_frame.from_options(
    connection_type="azuresql",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableIdentifier"
    }
)
```

## Azure SQL 연결 옵션 참조
<a name="aws-glue-programming-etl-connect-azuresql-reference"></a>
+ `connectionName` - 필수입니다. 읽기 및 쓰기에 사용됩니다. 연결 방법에 인증 정보를 제공하도록 구성된 AWS Glue Azure SQL 연결의 이름입니다.
+ `databaseName` - 읽기/쓰기에 사용됩니다. 유효한 값: Azure SQL 데이터베이스 이름. 연결할 Azure SQL 데이터베이스의 이름입니다.
+ `dbtable` - 쓰기 시 필수, `query`가 제공되지 않는 한 읽기 전용. 읽기 및 쓰기에 사용됩니다. 유효한 값: Azure SQL 테이블의 이름 또는 마침표로 구분된 스키마/테이블 이름 조합. 연결할 테이블을 식별하는 테이블과 스키마를 지정하는 데 사용됩니다. 기본 스키마는 "public"입니다. 테이블이 기본 스키마가 아닌 스키마를 사용하는 경우 이 정보를 양식 `schemaName.tableName`에 입력하십시오.
+ `query` — 읽기에 사용됩니다. Azure SQL에서 읽을 때 검색해야 하는 내용을 정의하는 Transact-SQL SELECT 쿼리입니다. 자세한 내용은 [Microsoft 설명서](https://learn.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=azuresqldb-mi-current)를 참조하십시오.