에서 HTTP 해석기 사용 AWS AppSync - AWS AppSync

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에서 HTTP 해석기 사용 AWS AppSync

AWS AppSync 를 사용하면 지원되는 데이터 소스(즉 AWS Lambda, Amazon DynamoDB, Amazon OpenSearch Service 또는 Amazon Aurora)를 사용하여 GraphQL 필드를 해결하기 위한 임의 HTTP 엔드포인트 외에도 다양한 작업을 수행할 수 있습니다. HTTP 엔드포인트를 사용할 수 있게 되면 데이터 소스를 사용하여 엔드포인트에 연결할 수 있습니다. 쿼리, 변형 및 구독 등 GraphQL 작업을 수행하도록 스키마의 해석기를 구성할 수 있습니다. 이 자습서에서는 몇 가지 일반적인 예제를 살펴봅니다.

이 자습서에서는 AWS AppSync GraphQL 엔드포인트와 함께 REST API (Amazon API Gateway 및 Lambda를 사용하여 생성)를 사용합니다.

생성 REST API

다음 AWS CloudFormation 템플릿을 사용하여 이 자습서에서 작동하는 REST 엔드포인트를 설정할 수 있습니다.

Blue button labeled "Launch Stack" with an arrow icon indicating an action to start.

AWS CloudFormation 스택은 다음 단계를 수행합니다.

  1. 마이크로서비스에 대한 비즈니스 로직이 포함된 Lambda 함수를 설정합니다.

  2. 다음 endpoint/method/content 유형 조합을 REST API 사용하여 API 게이트웨이를 설정합니다.

API 리소스 경로 HTTP 메서드 지원되는 콘텐츠 유형

/v1/사용자

POST

application/json

/v1/사용자

GET

application/json

/v1/사용자/1

GET

application/json

/v1/사용자/1

PUT

application/json

/v1/사용자/1

DELETE

application/json

GraphQL 생성 API

에서 GraphQLAPI을 생성하려면 AWS AppSync:

  1. AWS AppSync 콘솔을 열고 생성을 API선택합니다.

  2. GraphQLAPIs을 선택한 다음 처음부터 설계를 선택합니다. Next(다음)를 선택합니다.

  3. API 이름에 를 입력합니다UserData. Next(다음)를 선택합니다.

  4. Create GraphQL resources later를 선택합니다. Next(다음)를 선택합니다.

  5. 입력을 검토하고 생성을 API선택합니다.

AWS AppSync 콘솔은 API 키 인증 모드를 API 사용하여 새 GraphQL을 생성합니다. 콘솔을 사용하여 GraphQL을 추가로 구성API하고 요청을 실행할 수 있습니다.

GraphQL 스키마 생성

이제 GraphQL 가 있으므로 GraphQL 스키마를 생성API해 보겠습니다. AWS AppSync 콘솔의 스키마 편집기에서 아래 스니펫을 사용합니다.

type Mutation { addUser(userInput: UserInput!): User deleteUser(id: ID!): User } type Query { getUser(id: ID): User listUser: [User!]! } type User { id: ID! username: String! firstname: String lastname: String phone: String email: String } input UserInput { id: ID! username: String! firstname: String lastname: String phone: String email: String }

HTTP 데이터 소스 구성

HTTP 데이터 소스를 구성하려면 다음을 수행합니다.

  1. AWS AppSync GraphQL의 데이터 소스 페이지에서 데이터 소스 생성 을 API선택합니다.

  2. 데이터 소스의 이름(예: HTTP_Example)을 입력합니다.

  3. 데이터 소스 유형 에서 HTTP 엔드포인트 를 선택합니다.

  4. 엔드포인트를 자습서 시작 시 생성된 API Gateway 엔드포인트로 설정합니다. Lambda 콘솔로 이동하여 애플리케이션에서 애플리케이션을 찾으면 스택에서 생성된 엔드포인트를 찾을 수 있습니다. 애플리케이션 설정 내부에 에서 API 엔드포인트가 될 엔드포인트가 표시됩니다 AWS AppSync. 단계 이름을 엔드포인트의 일부로 포함하지 않았는지 확인합니다. 예를 들어 엔드포인트가 https://aaabbbcccd.execute-api.us-east-1.amazonaws.com/v1인 경우 https://aaabbbcccd.execute-api.us-east-1.amazonaws.com을 입력합니다.

참고

현재 에서는 퍼블릭 엔드포인트만 지원됩니다 AWS AppSync.

AWS AppSync 서비스에서 인식하는 인증 기관에 대한 자세한 내용은 for HTTPS Endpoints 에서 인식하는 인증 기관(CA) AWS AppSync 을 참조하세요.

해석기 구성

이 단계에서는 HTTP 데이터 소스를 getUseraddUser 쿼리에 연결합니다.

getUser 해석기를 설정하려면:

  1. AWS AppSync GraphQL 에서 스키마 탭을 API선택합니다.

  2. 스키마 편집기의 오른쪽에 있는 해석기 창의 쿼리 유형 아래에서 getUser 필드를 찾아 연결을 선택합니다.

  3. 해석기 유형을 Unit으로 유지하고 런타임을 APPSYNC_JS로 유지합니다.

  4. 데이터 소스 이름 에서 이전에 만든 HTTP 엔드포인트를 선택합니다.

  5. 생성(Create)을 선택합니다.

  6. 해석기 코드 편집기에서 다음 코드 조각을 요청 핸들러로 추가합니다.

    import { util } from '@aws-appsync/utils' export function request(ctx) { return { version: '2018-05-29', method: 'GET', params: { headers: { 'Content-Type': 'application/json', }, }, resourcePath: `/v1/users/${ctx.args.id}`, } }
  7. 다음 코드 조각을 응답 핸들러로 추가합니다.

    export function response(ctx) { const { statusCode, body } = ctx.result // if response is 200, return the response if (statusCode === 200) { return JSON.parse(body) } // if response is not 200, append the response to error block. util.appendError(body, statusCode) }
  8. 쿼리 탭을 선택한 후, 다음 쿼리를 실행합니다.

    query GetUser{ getUser(id:1){ id username } }

    그러면 다음과 같은 응답이 반환됩니다.

    { "data": { "getUser": { "id": "1", "username": "nadia" } } }

addUser 해석기를 설정하려면:

  1. 스키마 탭을 선택합니다.

  2. 스키마 편집기의 오른쪽에 있는 해석기 창의 쿼리 유형 아래에서 addUser 필드를 찾아 연결을 선택합니다.

  3. 해석기 유형을 Unit으로 유지하고 런타임을 APPSYNC_JS로 유지합니다.

  4. 데이터 소스 이름 에서 이전에 만든 HTTP 엔드포인트를 선택합니다.

  5. 생성(Create)을 선택합니다.

  6. 해석기 코드 편집기에서 다음 코드 조각을 요청 핸들러로 추가합니다.

    export function request(ctx) { return { "version": "2018-05-29", "method": "POST", "resourcePath": "/v1/users", "params":{ "headers":{ "Content-Type": "application/json" }, "body": ctx.args.userInput } } }
  7. 다음 코드 조각을 응답 핸들러로 추가합니다.

    export function response(ctx) { if(ctx.error) { return util.error(ctx.error.message, ctx.error.type) } if (ctx.result.statusCode == 200) { return ctx.result.body } else { return util.appendError(ctx.result.body, "ctx.result.statusCode") } }
  8. 쿼리 탭을 선택한 후, 다음 쿼리를 실행합니다.

    mutation addUser{ addUser(userInput:{ id:"2", username:"shaggy" }){ id username } }

    getUser 쿼리를 다시 실행하면 다음과 같은 응답이 반환되어야 합니다.

    { "data": { "getUser": { "id": "2", "username": "shaggy" } } }

AWS 서비스 호출

HTTP 해석기를 사용하여 AWS 서비스에 대한 GraphQL API 인터페이스를 설정할 수 있습니다. HTTP AWS 가 보낸 사람을 식별할 수 있도록 서명 버전 4 프로세스로 에 대한 요청에 서명해야 AWS 합니다. 는 IAM 역할을 HTTP 데이터 소스와 연결할 때 사용자를 대신하여 서명을 AWS AppSync 계산합니다.

HTTP 해석기를 사용하여 AWS 서비스를 호출하기 위한 두 가지 추가 구성 요소를 제공합니다.

  • AWS 서비스를 호출할 권한이 있는 IAM 역할 APIs

  • 데이터 원본의 서명 구성

예를 들어 HTTP 해석기를 사용하여 ListGraphqlApis 작업을 호출하려면 먼저 다음 정책이 연결된 상태로 를 수 AWS AppSync 임하는 IAM 역할을 생성합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "appsync:ListGraphqlApis" ], "Effect": "Allow", "Resource": "*" } ] }

그런 다음 에 대한 HTTP 데이터 소스를 생성합니다 AWS AppSync. 이 예제에서는 미국 서부(오레곤) 리전 AWS AppSync 에서 를 호출합니다. 서명 리전 및 서비스 이름이 http.json포함된 라는 파일에서 다음 HTTP 구성을 설정합니다.

{ "endpoint": "https://appsync.us-west-2.amazonaws.com/", "authorizationConfig": { "authorizationType": "AWS_IAM", "awsIamConfig": { "signingRegion": "us-west-2", "signingServiceName": "appsync" } } }

그런 다음 AWS CLI 를 사용하여 다음과 같이 연결된 역할로 데이터 소스를 생성합니다.

aws appsync create-data-source --api-id <API-ID> \ --name AWSAppSync \ --type HTTP \ --http-config file:///http.json \ --service-role-arn <ROLE-ARN>

스키마의 필드에 해석기를 연결할 때 다음 요청 매핑 템플릿을 사용하여 를 호출합니다 AWS AppSync.

{ "version": "2018-05-29", "method": "GET", "resourcePath": "/v1/apis" }

이 데이터 소스에 대해 GraphQL 쿼리를 실행하면 는 제공한 역할을 사용하여 요청에 AWS AppSync 서명하고 요청에 서명을 포함합니다. 쿼리는 해당 AWS 리전의 계정에 APIs 있는 AWS AppSync GraphQL 목록을 반환합니다.