Apigee Edge 문서입니다.
Go to the
Apigee X documentation. info
버전 1.4.1
Cloud Spanner 데이터베이스에서 삽입, 쿼리, 업데이트 작업을 수행합니다.
이 콘텐츠는 이 확장 프로그램을 구성하고 사용하는 데 필요한 참조를 제공합니다. ExtensionCallout 정책을 사용하여 API 프록시에서 확장 프로그램을 사용하기 전에 다음을 수행해야 합니다:
인스턴스와 데이터베이스가 있으면 확장 프로그램을 나타내는 GCP 서비스 계정에 데이터베이스 액세스 권한을 부여합니다. 사용할 역할에 대한 자세한 내용은 Cloud Spanner 역할을 참고하세요. Cloud Spanner 액세스 제어에 대한 자세한 내용은 IAM 역할 및 Cloud Spanner 액세스 제어 적용을 참고하세요.
원하는 수준의 데이터베이스 액세스 권한이 있는 서비스 계정이 있으면 GCP 콘솔을 사용하여 서비스 계정의 키를 생성합니다. 이 확장 프로그램을 구성할 때 생성된 키 JSON 파일의 콘텐츠를 사용합니다.
구성 참조를 사용하여 확장 프로그램을 추가하고 구성할 때 생성된 키 JSON 파일의 콘텐츠를 사용합니다.
Cloud Spanner 정보
Cloud Spanner는 고가용성, 강력한 일관성, 트랜잭션 읽기 및 쓰기가 필요한 관계형, 구조화된 데이터, 반구조화된 데이터에 유용한 관계형 데이터베이스 서비스입니다.
Cloud Spanner를 처음 사용하는 경우 Cloud Spanner 문서의 빠른 시작을 참조하는 것이 좋습니다.
샘플
다음 예시에서는 ExtensionCallout 정책을 사용하여 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>
다음 ExtensionCallout 정책은 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 | rows JSON 객체의 배열로 표현되는 삽입할 행입니다. |
배열 | 없음 | 예 |
응답
없음
querySQL
지정된 매개변수가 있는 SQL 문을 사용하여 데이터베이스를 쿼리합니다. 매개변수는 @가 앞에 붙은 이름으로 SQL 문에 제공되며 매개변수 값은 이 작업의 params 매개변수에 지정됩니다.
Cloud Spanner 쿼리 구문에 대한 자세한 내용은 쿼리 구문을 참고하세요.
구문
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
예
이 예시에서 쿼리는 username 및 email 열 값을 user 테이블에서 가져옵니다. 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 | 행을 업데이트해야 하는 데이터베이스의 테이블입니다. | 문자열 | 없음 | 예 |
| rows | 업데이트할 행 데이터의 배열입니다. 배열의 각 항목에는 업데이트할 행의 고유 ID (예: 기본 키) 값이 포함되어야 합니다. | 배열 | 없음 | 예 |
응답
없음
구성 참조
API 프록시에서 사용할 이 확장 프로그램을 구성하고 배포할 때는 다음을 사용하세요. Apigee 콘솔을 사용하여 확장 프로그램을 구성하는 단계는 확장 프로그램 추가 및 구성을 참고하세요.
일반 확장 프로그램 속성
모든 확장 프로그램에는 다음과 같은 속성이 있습니다.
| 속성 | 설명 | 기본 | 필수 |
|---|---|---|---|
name |
확장 프로그램의 구성에 지정할 이름입니다. | 없음 | 지원됨 |
packageName |
Apigee Edge에서 제공하는 확장 프로그램 패키지 이름입니다. | 없음 | 지원됨 |
version |
확장 프로그램을 구성하는 확장 프로그램 패키지의 버전 번호입니다. | 없음 | 지원됨 |
configuration |
추가하는 확장 프로그램 관련 구성 값입니다. 이 확장 프로그램 속성의 속성을 참조하세요. | 없음 | 지원됨 |
이 확장 프로그램 패키지의 속성
이 확장 프로그램과 관련된 다음 구성 속성의 값을 지정합니다.
| 속성 | 설명 | 기본값 | 필수 |
|---|---|---|---|
| projectId | 데이터베이스가 포함된 GCP 프로젝트의 ID입니다. | 없음 | 예 |
| instanceId | GCP 프로젝트에 있는 Cloud Spanner 인스턴스의 ID입니다. | 없음 | 예 |
| databaseId | Cloud Spanner 데이터베이스의 ID입니다. | 없음 | 예 |
| credentials | Apigee Edge 콘솔에 입력하면 서비스 계정 키 파일의 콘텐츠가 됩니다. Management API를 통해 전송되면 서비스 계정 키 파일에서 생성된 base64로 인코딩된 값입니다. | 없음 | 예 |