

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

# AWS AppSync 프라이빗 APIs 사용
<a name="using-private-apis"></a>

Amazon Virtual Private Cloud(VPC)를 사용하는 경우 VPC에서만 액세스할 수 있는 APIs인 AWS AppSync 프라이빗 APIs를 생성할 수 있습니다. 프라이빗 API를 사용하면 데이터를 공개적으로 노출하지 않으면서 내부 애플리케이션에 대한 API 액세스를 제한하고 GraphQL 및 Realtime 엔드포인트에 연결할 수 있습니다.

VPC와 AWS AppSync 서비스 간에 프라이빗 연결을 설정하려면 인터페이스 VPC 엔드포인트를 생성해야 합니다. 인터페이스 엔드포인트는 로 구동되므로 인터넷 게이트웨이[AWS PrivateLink](https://aws.amazon.com/privatelink), NAT 디바이스, VPN 연결 또는 Direct Connect 연결 없이 비공개로 AWS AppSync APIs에 액세스할 수 있습니다. VPC의 인스턴스는 AWS AppSync API와 통신하는 데 퍼블릭 IP 주소를 필요로 하지 않습니다. VPC와 간의 트래픽은 AWS 네트워크를 벗어나 AWS AppSync 지 않습니다.

AWS AppSync 는 데이터 영역 및 컨트롤 플레인 작업 모두에 AWS PrivateLink 대해 다음을 지원합니다.
+ **데이터 플레인 엔드포인트**(`com.amazonaws.{region}.appsync-api`): 쿼리, 변형 및 구독을 위한 GraphQL 및 실시간 API에 대한 프라이빗 액세스를 제공합니다.
+ **컨트롤 플레인 엔드포인트**(`com.amazonaws.{region}.appsync`): APIs 생성, 스키마 업데이트, 데이터 소스 구성과 같은 AWS AppSync 관리 작업에 대한 프라이빗 액세스를 제공합니다.

![\[AWS 클라우드 architecture showing VPC with public and private subnets connecting to AWS AppSync via PrivateLink.\]](http://docs.aws.amazon.com/ko_kr/appsync/latest/devguide/images/private-api-architecture.png)


프라이빗 API 기능을 활성화하기 전에 몇 가지 사항을 추가로 고려해야 합니다.
+ 프라이빗 DNS 기능이 활성화된 AWS AppSync 에 VPC 인터페이스 엔드포인트를 설정하면 VPC의 리소스가 AWS AppSync 생성된 APIs URL을 사용하여 다른 AWS AppSync 퍼블릭 API를 호출할 수 없습니다. 이는 퍼블릭 API에 대한 요청이 인터페이스 엔드포인트를 통해 라우팅되는데, 퍼블릭 API에 허용되지 않는 방식이기 때문입니다. 이 시나리오에서 퍼블릭 API를 간접적으로 호출하려면 퍼블릭 API에서 사용자 지정 도메인 이름을 구성하는 것이 좋습니다. 그렇게 하면 퍼블릭 API를 간접적으로 호출하는 데 VPC의 리소스가 사용될 수 있습니다.
+  AWS AppSync 프라이빗 APIs VPC에서만 사용할 수 있습니다. AWS AppSync 콘솔 쿼리 편집기는 브라우저의 네트워크 구성이 VPC로 트래픽을 라우팅할 수 있는 경우에만 API에 연결할 수 있습니다(예: VPN 또는를 통한 연결 Direct Connect).
+ 용 VPC 인터페이스 엔드포인트를 사용하면 동일한 AWS 계정 및 리전의 모든 프라이빗 API에 액세스할 AWS AppSync수 있습니다. 프라이빗 API에 대한 액세스를 추가로 제한하려면 다음 옵션을 고려해 보세요.
  + 필요한 관리자만 VPC 엔드포인트 인터페이스를 생성할 수 있도록 합니다 AWS AppSync.
  + VPC 엔드포인트 사용자 지정 정책을 사용하여 VPC의 리소스에서 간접적으로 호출할 수 있는 API를 제한합니다.
  + VPC의 리소스의 경우 리소스에 AWS AppSync APIs에 대한 범위 축소 역할이 부여되도록 하여 IAM 권한 부여를 사용하여 APIs를 호출하는 것이 좋습니다.
+ IAM 보안 주체를 제한하는 정책을 만들거나 사용할 때는 메서드의 `authorizationType`을 `AWS_IAM` 또는 `NONE`으로 설정해야 합니다.

## AWS AppSync 프라이빗 APIs 생성
<a name="creating-private-apis"></a>

아래 단계는 AWS AppSync 서비스에서 프라이빗 APIs를 생성하는 방법을 보여줍니다.

**주의**  
API를 생성하는 동안에만 프라이빗 API 기능을 활성화할 수 있습니다. 이 설정은 API 또는 AWS AppSync 프라이빗 AWS AppSync API가 생성된 후에는 수정할 수 없습니다.

1. 에 로그인 AWS Management Console 하고 [AppSync 콘솔](https://console.aws.amazon.com/appsync/)을 엽니다.

   1. **대시보드**에서 **API 생성**을 선택합니다.

1. **처음부터 API 설계**를 선택하고 **다음**을 선택합니다.

1. **프라이빗 API** 섹션에서 **프라이빗 API 기능 사용**을 선택합니다.

1. 나머지 옵션을 구성하고 API의 데이터를 검토한 다음 **생성**을 선택합니다.

 AWS AppSync 프라이빗 API를 사용하려면 먼저 VPC AWS AppSync 에서에 대한 인터페이스 엔드포인트를 구성해야 합니다. 프라이빗 API와 VPC 모두 동일한 AWS 계정 및 리전에 있어야 합니다.

## 에 대한 인터페이스 엔드포인트 생성 AWS AppSync
<a name="creating-interface-endpoint"></a>

Amazon VPC 콘솔 또는 AWS Command Line Interface ()를 AWS AppSync 사용하여 용 인터페이스 엔드포인트를 생성할 수 있습니다AWS CLI. 사용 사례에 따라 하나 또는 두 엔드포인트 유형을 모두 생성해야 할 수 있습니다.
+ **데이터 플레인 엔드포인트**: VPC에서 프라이빗 API에 액세스하는 데 필요합니다.
+ **컨트롤 플레인 엔드포인트**: AWS CLI 또는 SDK를 사용하여 VPC에서 AWS AppSync 리소스를 관리하는 데 필요합니다. SDKs

자세한 내용은 *Amazon VPC 사용 설명서*의 [인터페이스 엔드포인트 생성](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint)을 참조하세요.

**참고**  
올바른 VPC 엔드포인트 서비스를 선택해야 합니다. AppSync에는 두 가지가 있는데, `com.amazonaws.{region}.appsync-api`는 프라이빗 API 서비스이고 `com.amazonaws.{region}.appsync`는 API 관리에 사용되는 서비스입니다.

------
#### [ Console ]

1. 에 로그인 AWS Management Console 하고 Amazon VPC 콘솔의 [엔드포인트](https://console.aws.amazon.com/vpc/home?#Endpoints) 페이지를 엽니다.

1. **엔드포인트 생성**을 선택합니다.

   1. **서비스 카테고리** 필드에서 **AWS 서비스**가 선택되어 있는지 확인합니다.

   1. **서비스** 테이블에서 다음 서비스 중 하나를 선택합니다.
      + 데이터 플레인 액세스의 경우: `com.amazonaws.{region}.appsync-api`
      + 컨트롤 플레인 액세스의 경우: `com.amazonaws.{region}.appsync`

      **유형** 열 값이 `Interface`인지 확인합니다.

   1. **VPC** 필드에서 VPC와 서브넷을 선택합니다.

   1. 인터페이스 엔드포인트에 대한 프라이빗 DNS 기능을 활성화하려면 **DNS 이름 활성화** 확인란을 선택합니다.

   1. **보안 그룹** 필드에서 보안 그룹을 하나 이상 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

1. 필요한 경우 프로세스를 반복하여 두 번째 엔드포인트 유형을 생성합니다.

------
#### [ CLI ]

`[create-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html)` 명령을 사용하여 엔드포인트 네트워크 인터페이스와 연결할 VPC ID, VPC 엔드포인트 유형(인터페이스), 서비스 이름, 엔드포인트를 사용할 서브넷 및 보안 그룹을 지정합니다.

**데이터 플레인 엔드포인트 생성:**

```
$ aws ec2 create-vpc-endpoint —vpc-id vpc-ec43eb89 \
  —vpc-endpoint-type Interface \
  —service-name com.amazonaws.{region}.appsync-api \
  —subnet-id subnet-abababab —security-group-id sg-1a2b3c4d
```

**컨트롤 플레인 엔드포인트:**

```
$ aws ec2 create-vpc-endpoint —vpc-id vpc-ec43eb89 \
  —vpc-endpoint-type Interface \
  —service-name com.amazonaws.{region}.appsync \
  —subnet-id subnet-abababab —security-group-id sg-1a2b3c4d
```

------

프라이빗 DNS 옵션을 사용하려면 VPC의 `enableDnsHostnames` 및 `enableDnsSupportattributes` 값을 설정해야 합니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [VPC에 대한 DNS 지원 보기 및 업데이트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)를 참조하세요. 인터페이스 엔드포인트에 대해 프라이빗 DNS 기능을 활성화하는 경우 아래 형식을 사용하여 기본 퍼블릭 DNS 엔드포인트를 사용하여 AWS AppSync API GraphQL 및 실시간 엔드포인트에 요청할 수 있습니다.

```
https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql
```

컨트롤 플레인 작업의 경우 표준 AWS AppSync 서비스 엔드포인트를 사용할 수 있습니다.

```
https://appsync.{region}.amazonaws.com
```

서비스 엔드포인트에 대한 자세한 내용은 *AWS 일반 참조*에서 [서비스 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)을 참조하세요.

인터페이스 엔드포인트와의 서비스 상호 작용에 대한 자세한 내용은 *Amazon VPC 사용 설명서*의 [인터페이스 엔드포인트를 통해 서비스 액세스](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#access-service-though-endpoint)를 참조하세요.

 AWS CloudFormation을 사용하여 엔드포인트를 생성하고 구성하는 방법에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [AWS::EC2::VPCEndpoint](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html) 리소스를 참조하세요.

## 고급 예제
<a name="advanced-example"></a>

인터페이스 엔드포인트에 대해 프라이빗 DNS 기능을 활성화하는 경우 아래 형식을 사용하여 기본 퍼블릭 DNS 엔드포인트를 사용하여 AWS AppSync API GraphQL 및 실시간 엔드포인트에 요청할 수 있습니다.

```
https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql
```

인터페이스 VPC 엔드포인트 퍼블릭 DNS 호스트 이름을 사용할 경우 API를 간접적으로 호출하는 기본 URL의 형식은 다음과 같습니다.

```
https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql
```

AZ에 엔드포인트를 배포한 경우 AZ 전용 DNS 호스트 이름을 사용할 수도 있습니다.

```
https://{vpc_endpoint_id}-{endpoint_dns_identifier}-{az_id}.appsync-api.{region}.vpce.amazonaws.com/graphql.
```

VPC 엔드포인트 퍼블릭 DNS 이름을 사용하려면 AWS AppSync API 엔드포인트 호스트 이름을 요청에 헤더로 `Host` 또는 ` x-appsync-domain` 헤더로 전달해야 합니다. 다음 예제에서는 [샘플 스키마 시작](https://docs.aws.amazon.com/appsync/latest/devguide/quickstart-launch-a-sample-schema.html) 가이드에서 생성했던 `TodoAPI`를 사용합니다.

```
curl https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql \
-H "Content-Type:application/graphql" \
-H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \
-H "Host:{api_url_identifier}.appsync-api.{region}.amazonaws.com" \
-d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
```

다음 예제에서는 [샘플 스키마 시작](https://docs.aws.amazon.com/appsync/latest/devguide/quickstart-launch-a-sample-schema.html) 가이드에서 생성한 *Todo* 앱을 사용합니다. 샘플 Todo API를 테스트하기 위해 프라이빗 DNS를 사용하여 API를 간접적으로 호출하겠습니다. 원하는 명령줄 도구를 사용할 수 있으며, 이 예제에서는 [curl](https://curl.se/)을 사용하여 쿼리와 변형을 전송하고 [wscat](https://www.npmjs.com/package/wscat)를 사용하여 구독을 설정합니다. 예제를 에뮬레이션하려면 아래 명령`{ }`의 대괄호 안의 값을 AWS 계정의 해당 값으로 바꿉니다.

**변형 작업 테스트 - `createTodo` 요청**

```
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \
-H "Content-Type:application/graphql" \
-H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \
-d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
```

**변형 작업 테스트 - `createTodo` 응답**

```
{
    "data": {
        "createTodo": {
            "id": "<todo-id>",
            "name": "My first GraphQL task",
            "where": "Day 1",
            "when": "Friday Night",
            "description": "Learn more about GraphQL"
        }
    }
}
```

**쿼리 작업 테스트 - `listTodos` 요청**

```
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \
-H "Content-Type:application/graphql" \
-H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \
-d '{"query":"query ListTodos {\n listTodos {\n items {\n description\n id\n name\n when\n where\n }\n }\n}\n","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
```

**쿼리 작업 테스트 - `listTodos` 요청**

```
{
  "data": {
    "listTodos": {
      "items": [
        {
          "description": "Learn more about GraphQL",
          "id": "<todo-id>",
          "name": "My first GraphQL task",
          "when": "Friday night",
          "where": "Day 1"
        }
      ]
    }
  }
}
```

**구독 작업 테스트 - `createTodo` 변형 구독**

에서 GraphQL 구독을 설정하려면 실시간 WebSocket 클라이언트 빌드를 AWS AppSync참조하세요. [ WebSocket ](https://docs.aws.amazon.com/appsync/latest/devguide/real-time-websocket-client.html) VPC의 Amazon EC2 인스턴스에서 [wscat](https://github.com/websockets/wscat)을 사용하여 AWS AppSync 프라이빗 API 구독 엔드포인트를 테스트할 수 있습니다. 아래 예에서는 권한 부여를 위해 `API KEY`를 사용합니다.

```
$ header=`echo '{"host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com","x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}"}' | base64 | tr -d '\n'`
$ wscat -p 13 -s graphql-ws -c  "wss://{api_url_identifier}.appsync-realtime-api.us-west-2.amazonaws.com/graphql?header=$header&payload=e30="
Connected (press CTRL+C to quit)
> {"type": "connection_init"}
< {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}}
< {"type":"ka"}
> {"id":"f7a49717","payload":{"data":"{\"query\":\"subscription onCreateTodo {onCreateTodo {description id name where when}}\",\"variables\":{}}","extensions":{"authorization":{"x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}","host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com"}}},"type":"start"}
< {"id":"f7a49717","type":"start_ack"}
```

또는 VPC 엔드포인트 도메인 이름을 사용하고 `wscat` 명령에서 **호스트** 헤더를 지정하여 WebSocket을 설정해야 합니다.

```
$ header=`echo '{"host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com","x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}"}' | base64 | tr -d '\n'`
$ wscat -p 13 -s graphql-ws -c  "wss://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql?header=$header&payload=e30=" --header Host:{api_url_identifier}.appsync-realtime-api.us-west-2.amazonaws.com
Connected (press CTRL+C to quit)
> {"type": "connection_init"}
< {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}}
< {"type":"ka"}
> {"id":"f7a49717","payload":{"data":"{\"query\":\"subscription onCreateTodo {onCreateTodo {description id priority title}}\",\"variables\":{}}","extensions":{"authorization":{"x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}","host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com"}}},"type":"start"}
< {"id":"f7a49717","type":"start_ack"}
```

아래 변형 코드를 실행하세요.

```
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \
-H "Content-Type:application/graphql" \
-H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \
-d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
```

이후 구독이 시작되고 아래와 같이 메시지 알림이 표시됩니다.

```
< {"id":"f7a49717","type":"data","payload":{"data":{"onCreateTodo":{"description":"Go to the shops","id":"169ce516-b7e8-4a6a-88c1-ab840184359f","priority":5,"title":"Go to the shops"}}}}
```

## 컨트롤 플레인 예제
<a name="control-plane-examples"></a>

컨트롤 플레인 VPC 엔드포인트가 구성된 상태에서 AWS CLI 또는 SDK를 사용하여 VPC 내에서 AWS AppSync 리소스를 관리할 수 있습니다. SDKs 다음은 일반적인 컨트롤 플레인 작업의 예제입니다.

**를 사용하여 API 생성 AWS CLI**

```
aws appsync create-graphql-api \
  --name "MyPrivateAPI" \
  --authentication-type API_KEY \
  --visibility PRIVATE
```

**스키마 업데이트**

```
aws appsync start-schema-creation \
  --api-id {api-id} \
  --definition file://schema.graphql
```

**데이터 소스 생성**

```
aws appsync create-data-source \
  --api-id {api-id} \
  --name "MyDataSource" \
  --type AWS_LAMBDA \
  --lambda-config lambdaFunctionArn=arn:aws:lambda:{region}:{account}:function:MyFunction
```

프라이빗 DNS가 활성화된 상태에서 컨트롤 플레인 엔드포인트를 사용하는 경우 이러한 명령은 VPC 엔드포인트를 통해 자동으로 라우팅됩니다. 프라이빗 DNS가 활성화되지 않은 경우 엔드포인트 URL을 지정할 수 있습니다.

```
aws appsync create-graphql-api \
  --endpoint-url https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync.{region}.vpce.amazonaws.com \
  --name "MyPrivateAPI" \
  --authentication-type API_KEY \
  --visibility PRIVATE
```

## IAM 정책을 사용하여 퍼블릭 API 생성 제한
<a name="blocking-public-apis"></a>

AWS AppSync 는 프라이빗 APIs와 함께 사용할 수 있는 IAM [`Condition` 문](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)을 지원합니다. 프라이빗 및 퍼블릭 API를 생성할 수 있는 IAM 역할 및 사용자를 제어하는 `appsync:CreateGraphqlApi` 작업을 위해 IAM 정책 설명과 함께 `visibility` 필드를 포함할 수 있습니다. 이렇게 하면 IAM 관리자는 사용자가 프라이빗 GraphQL API만 생성할 수 있도록 하는 IAM 정책을 정의할 수 있습니다. 퍼블릭 API를 생성하려는 사용자에게는 권한 없음 메시지가 표시됩니다.

예를 들어 IAM 관리자는 다음과 같은 IAM 정책 설명을 생성하여 프라이빗 API 생성을 허용할 수 있습니다.

```
{
    "Sid": "AllowPrivateAppSyncApis",
    "Effect": "Allow",
    "Action": "appsync:CreateGraphqlApi",
    "Resource": "*",
    "Condition": {
        "ForAnyValue:StringEquals": {
            "appsync:Visibility": "PRIVATE"
        }
    }
}
```

IAM 관리자는 다음 [서비스 제어 정책을](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) 추가하여 AWS 조직의 모든 사용자가 프라이빗 AWS AppSync APIs 이외의 API를 생성하지 못하도록 차단할 수도 APIs.

```
{
    "Sid": "BlockNonPrivateAppSyncApis",
    "Effect": "Deny",
    "Action": "appsync:CreateGraphqlApi",
    "Resource": "*",
    "Condition": {
        "ForAnyValue:StringNotEquals": {
            "appsync:Visibility": "PRIVATE"
        }
    }
}
```

## VPC PrivateLink 지원
<a name="privatelink-support"></a>

VPC Privatelink 지원은에서 사용할 수 있습니다 AWS AppSync. PrivateLink를 사용하면 AWS 네트워크를 벗어나는 트래픽 없이 AWS 서비스를 사용하고 상호 작용할 수 있습니다.

AWS AppSync 는 데이터 영역 및 컨트롤 플레인 작업 모두에 AWS PrivateLink 대해를 지원합니다.
+ **VPCE 엔드포인트**(`appsync.<region>.vpce.amazonaws.com`): 다음과 같이 데이터 플레인 및 컨트롤 플레인 작업에 대한 VPC 액세스를 제공합니다.
  + 컨트롤 플레인 작업을 위한 **appsync** 
  + 데이터 플레인 작업을 위한 **appsync-api** 