현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동 정보
버전 1.4.1
Cloud Spanner 데이터베이스에서 삽입, 쿼리, 업데이트 작업을 수행합니다.
이 콘텐츠는 이 확장 프로그램을 구성하고 사용하기 위한 참조를 제공합니다. 확장 콜아웃 정책을 사용하여 API 프록시의 확장 프로그램을 사용하려면 먼저 다음 작업을 수행해야 합니다.
인스턴스 만들기 및 관리에 설명된 대로 Cloud Spanner 인스턴스를 만들고 데이터베이스를 만듭니다.
인스턴스와 데이터베이스가 생성되었으면 확장 프로그램을 나타내는 GCP 서비스 계정에 데이터베이스에 액세스할 수 있는 권한을 부여합니다. 사용할 역할에 대한 자세한 내용은 Cloud Spanner 역할을 참조하세요. Cloud Spanner 액세스 제어에 대한 자세한 내용은 IAM 역할 적용 및 Cloud Spanner 액세스 제어를 참조하세요.
원하는 데이터베이스에 대한 액세스 수준에 대한 권한이 있는 서비스 계정이 있으면 GCP 콘솔을 사용하여 서비스 계정의 키를 생성합니다. 이 확장 프로그램을 구성할 때 결과 키 JSON 파일의 콘텐츠를 사용합니다.
Cloud Spanner 정보
Cloud Spanner는 고가용성, strong consistency, 트랜잭션 읽기 및 쓰기가 필요한 관계형, 구조화 및 반정형 데이터에 유용한 관계형 데이터베이스 서비스입니다.
Cloud Spanner를 처음 시작하는 경우 Cloud Spanner 문서의 빠른 시작부터 시작하는 것이 좋습니다.
샘플
다음 예는 Extension콜아웃 정책을 사용하여 Cloud Spanner 확장 프로그램 작업 지원을 구성하는 방법을 보여줍니다.
데이터 추가
다음 예에서 확장 프로그램의 insert
작업은 사용자 테이블에 신규 사용자를 추가합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Insert-New-User">
<DisplayName>Insert New User</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
</ConnectorCallout>
데이터 가져오기
이 예시에서 쿼리는 user
테이블에서 사용자 이름과 이메일 값을 검색합니다.
먼저 AssignMessage 정책은 쿼리 WHERE 절에 사용할 postal.code.value
변수를 할당합니다. 다음 예를 참고하세요. 정책은 아마도 클라이언트 요청 매개변수를 기반으로 값을 설정할 것입니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Postal-Code">
<AssignTo createNew="true" transport="http" type="request"/>
<AssignVariable>
<Name>postal.code</Name>
<Value>86519</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
다음 확장 콜아웃 정책은 WHERE 절의 postal.code.value
변수의 콘텐츠를 사용하여 데이터베이스에 대해 쿼리를 실행합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
<DisplayName>Get User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
<Output>spanner.userdata.retrieved</Output>
</ConnectorCallout>
그러면 다음 AssignMessage 정책이 spanner.userdata.retrieved
변수에 저장된 확장 프로그램의 응답을 클라이언트에 반환되는 응답으로 사용합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Query-Response-Data">
<DisplayName>Get Query Response Data</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{spanner.userdata.retrieved}</Payload>
</Set>
</AssignMessage>
이 예에서 응답 데이터는 다음과 같이 JSON으로 반환됩니다.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
데이터 업데이트
이 예에서 <Input>
요소에는 테이블의 기본 키인 username
와 email
열의 새 값이 포함됩니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Update-User-Data">
<DisplayName>Update User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
</ConnectorCallout>
작업
insert
지정된 행을 데이터베이스에 삽입합니다.
문법
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
예
다음 예에서 확장 프로그램의 insert
작업은 사용자 테이블에 신규 사용자를 추가합니다. 행 1개가 추가되었습니다.
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
요청 매개변수
매개변수 | 설명 | 유형 | 기본 계정 | 필수 |
---|---|---|---|---|
tableName | 행을 삽입해야 하는 데이터베이스의 테이블입니다. | 문자열 | 없음 | 예. |
행 | 삽입할 행은 rows JSON 객체의 배열로 표현됩니다. |
배열 | 없음 | 예. |
응답
없음
querySQL
지정된 매개변수가 있는 SQL 문을 사용하여 데이터베이스를 쿼리합니다. 매개변수는 SQL 문에서 @-앞에 추가된 이름으로 지정되며, 매개변수 값은 이 작업의 params
매개변수에 지정됩니다.
Cloud Spanner 쿼리 구문에 대한 자세한 내용은 쿼리 구문을 참조하세요.
문법
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
예
이 예시에서 쿼리는 user
테이블에서 username
및 email
열 값을 검색합니다. SQL 문은 흐름 변수 postal.code.value
에서 설정된 postalCode
매개변수를 지정합니다.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
요청 매개변수
매개변수 | 설명 | 유형 | 기본 계정 | 필수 |
---|---|---|---|---|
sql | 실행할 SQL 쿼리입니다. @-앞에 추가된 매개변수 이름으로 매개변수를 지정할 수 있습니다. 이러한 매개변수 이름은 이 작업의 params 매개변수에 있는 키와 일치해야 합니다. |
문자열 | 없음 | 예. |
params | 키와 값이 SQL 쿼리에 사용되는 매개변수 이름과 값인 객체입니다. 여기에 여러 매개변수를 나열할 수 있습니다. | 객체 | 없음 | 번호 |
응답
쿼리에서 반환된 열 이름-값 쌍의 배열을 포함하는 rows
객체입니다. 예를 들면 다음과 같습니다.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
update
지정된 데이터가 있는 데이터베이스의 행을 업데이트합니다.
문법
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
예
이 예시에서는 username
이 Liz456인 사용자의 이메일 주소가 새 값으로 업데이트됩니다. 행 1개가 업데이트되었습니다.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
요청 매개변수
매개변수 | 설명 | 유형 | 기본 계정 | 필수 |
---|---|---|---|---|
tableName | 행을 업데이트해야 하는 데이터베이스의 테이블입니다. | 문자열 | 없음 | 예. |
행 | 업데이트할 행 데이터의 배열입니다. 배열의 각 항목에는 업데이트할 행의 고유 ID (예: 기본 키) 값이 포함되어야 합니다. | 배열 | 없음 | 예. |
응답
없음
구성 참조
API 프록시에서 사용할 이 확장 프로그램을 구성하고 배포할 때 다음을 사용하세요. Apigee 콘솔을 사용하여 확장 프로그램을 구성하는 단계는 확장 프로그램 추가 및 구성을 참조하세요.
일반적인 확장 속성
모든 확장 프로그램에는 다음과 같은 속성이 있습니다.
속성 | 설명 | 기본 | 필수 |
---|---|---|---|
name |
확장 프로그램의 구성에 지정할 이름입니다. | 없음 | 지원됨 |
packageName |
Apigee Edge에서 제공하는 확장 프로그램 패키지 이름입니다. | 없음 | 지원됨 |
version |
확장 프로그램을 구성하는 확장 프로그램 패키지의 버전 번호입니다. | 없음 | 지원됨 |
configuration |
추가하는 확장 프로그램 관련 구성 값입니다. 이 확장 프로그램 속성의 속성을 참조하세요. | 없음 | 지원됨 |
이 확장 프로그램 패키지의 속성
이 확장 프로그램에 해당하는 다음 구성 속성의 값을 지정합니다.
속성 | 설명 | 기본 계정 | 필수 |
---|---|---|---|
projectId | 데이터베이스가 포함된 GCP 프로젝트의 ID입니다. | 없음 | 예. |
instanceId | GCP 프로젝트의 Cloud Spanner 인스턴스 ID입니다. | 없음 | 예. |
databaseId | Cloud Spanner 데이터베이스의 ID입니다. | 없음 | 예. |
사용자 인증 정보 | Apigee Edge 콘솔에 입력하면 서비스 계정 키 파일의 콘텐츠가 됩니다. 관리 API를 통해 전송되는 경우 서비스 계정 키 파일에서 생성된 base64로 인코딩된 값입니다. | 없음 | 예. |