

**지원 종료 공지:** 2026년 10월 30일에 Amazon Pinpoint에 대한 지원이 AWS 종료됩니다. 2026년 10월 30일 이후에는 Amazon Pinpoint 콘솔 또는 Amazon Pinpoint 리소스(엔드포인트, 세그먼트, 캠페인, 여정, 분석)에 더 이상 액세스할 수 없습니다. 자세한 내용은 [Amazon Pinpoint 지원 종료](https://docs.aws.amazon.com/console/pinpoint/migration-guide)를 참조하세요. **참고:** SMS, 음성, 모바일 푸시, OTP 및 전화번호 검증과 관련된 APIs는이 변경의 영향을 받지 않으며 AWS 최종 사용자 메시징에서 지원됩니다.

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

# Amazon Pinpoint 엔드포인트와 사용자 연결
<a name="audience-define-user"></a>

엔드포인트에는 *사용자*를 정의하는 속성이 포함될 수 있습니다. 이 속성은 대상의 개인을 나타냅니다. 예를 들어, 사용자는 모바일 앱을 설치한 사람 또는 웹 사이트에 계정을 가지고 있는 사람을 나타낼 수 있습니다.

고유의 사용자 ID와 선택 사항으로 사용자 지정 사용자 속성을 지정하여 사용자를 정의합니다. 어떤 사람이 여러 디바이스에서 앱을 사용하는 경우 또는 한 사람에게 여러 주소로 메시지를 보낼 수 있는 경우 동일한 사용자 ID를 여러 엔드포인트에 할당할 수 있습니다. 이 경우 Amazon Pinpoint는 전체 엔드포인트에서 사용자 속성을 동기화합니다. 따라서 사용자 속성을 한 엔드포인트에 추가하면 Amazon Pinpoint는 동일한 사용자 ID가 포함된 각 엔드포인트에 해당 속성을 추가합니다.

사용자 속성을 추가하여 개인에게 적용되지만 이 사람이 사용하는 디바이스에 따라 달라지지 않는 데이터를 추적할 수 있습니다. 예를 들어, 한 사람의 이름, 연령 또는 계정 상태에 대한 속성을 추가할 수 있습니다.

**작은 정보**  
애플리케이션이 Amazon Cognito 사용자 풀을 사용하여 사용자 인증을 처리하는 경우 Amazon Cognito는 사용자 ID와 속성을 엔드포인트에 자동으로 추가합니다. 엔드포인트 사용자 ID 값의 경우 Amazon Cognito는 사용자 풀에 있는 사용자에게 할당된 `sub` 값을 할당합니다. Amazon Cognito를 사용하여 사용자를 추가하는 방법을 알아보려면 *Amazon Cognito 개발자 안내서*의 [Amazon Cognito 사용자 풀에서 Amazon Pinpoint 분석 사용](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-pinpoint-integration.html) 섹션을 참조하세요.

사용자 정의를 엔드포인트에 추가한 후에는 대상을 세그먼트화하는 방법에 대한 추가 옵션이 있습니다. 사용자 속성을 기반으로 세그먼트를 정의하거나, 사용자 ID 목록을 가져와서 세그먼트를 정의할 수 있습니다. 사용자를 기반으로 하는 세그먼트에 메시지를 전송하는 경우 잠재적인 대상에는 세그먼트의 각 사용자와 연결된 각 엔드포인트가 포함됩니다.

또한 대상에게 메시지를 보내는 방법에 대한 추가 옵션도 있습니다. 캠페인을 사용하여 한 세그먼트의 사용자에게 메시지를 보내거나, 사용자 ID 목록에 메시지를 직접 전송할 수 있습니다. 메시지를 개인 설정하려면 사용자 속성 값으로 대체되는 메시지 변수를 포함시킬 수 있습니다.

## 예시
<a name="audience-define-user-example"></a>

다음 예제에서는 사용자 정의를 엔드포인트에 추가하는 방법을 보여 줍니다.

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

AWS CLI에서 명령을 실행하여 Amazon Pinpoint를 사용할 수 있습니다.

**Example 엔드포인트 업데이트 명령**  
사용자를 엔드포인트에 추가하려면 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/update-endpoint.html) 명령을 사용합니다. `--endpoint-request` 파라미터의 경우 사용자가 포함될 수 있는 새 엔드포인트를 정의할 수 있습니다. 또는 기존 엔드포인트를 업데이트하려면 변경할 속성만 제공할 수 있습니다. 다음 예제에서는 사용자 속성만 제공하여 사용자를 기존 엔드포인트에 추가합니다.  

```
$ aws pinpoint update-endpoint \
> --application-id application-id \
> --endpoint-id endpoint-id \
> --endpoint-request file://endpoint-request-file.json
```
위치:  
+ *application-id*는 엔드포인트를 추가하거나 업데이트할 Amazon Pinpoint 프로젝트의 ID입니다.
+ *endpoint-id*는 새 엔드포인트에 할당할 ID 또는 업데이트할 기존 엔드포인트의 ID입니다.
+ *endpoint-request-file.json*은 `--endpoint-request` 파라미터에 대한 입력이 포함된 로컬 JSON 파일의 파일 경로입니다.

**Example 엔드포인트 요청 파일**  
예제 `update-endpoint` 명령은 JSON 파일을 `--endpoint-request` 파라미터의 인수로 사용합니다. 이 파일에는 다음과 같은 사용자 정의가 포함되어 있습니다.  

```
{ 
    "User":{ 
        "UserId":"example_user",
        "UserAttributes":{ 
            "FirstName":["Wang"],
            "LastName":["Xiulan"],
            "Gender":["Female"],
            "Age":["39"]
        }
    }
}
```
사용자를 정의하는 데 사용할 수 있는 속성은 *Amazon Pinpoint API 참조*에서 [EndpointRequest](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#apps-application-id-endpoints-endpoint-id-schemas) 스키마의 `User` 객체를 참조하세요.

------
#### [ AWS SDK for Java ]

AWS SDK for Java에서 제공하는 클라이언트를 사용하여 Java 애플리케이션에서 Amazon Pinpoint API를 사용할 수 있습니다.

**Example 코드**  
엔드포인트에 사용자를 추가하려면 EndpointRequest 객체를 초기화하고 이를 `AmazonPinpoint` 클라이언트의 `updateEndpoint` 메서드에 전달합니다. 이 객체를 사용하여 사용자가 포함될 수 있는 새 엔드포인트를 정의할 수 있습니다. 또는 기존 엔드포인트를 업데이트하려면 변경할 속성만 업데이트할 수 있습니다. 다음 예제에서는 EndpointUser 객체를 EndpointRequest 객체에 추가하여 사용자를 기존 엔드포인트에 추가합니다.  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.pinpoint.PinpointClient;
import software.amazon.awssdk.services.pinpoint.model.EndpointRequest;
import software.amazon.awssdk.services.pinpoint.model.EndpointUser;
import software.amazon.awssdk.services.pinpoint.model.ChannelType;
import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointRequest;
import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointResponse;
import software.amazon.awssdk.services.pinpoint.model.PinpointException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
```

```
    public static void updatePinpointEndpoint(PinpointClient pinpoint, String applicationId, String endPointId) {
        try {
            List<String> wangXiList = new ArrayList<>();
            wangXiList.add("cooking");
            wangXiList.add("running");
            wangXiList.add("swimming");

            Map myMapWang = new HashMap<>();
            myMapWang.put("interests", wangXiList);

            List<String> myNameWang = new ArrayList<>();
            myNameWang.add("Wang ");
            myNameWang.add("Xiulan");

            Map wangName = new HashMap<>();
            wangName.put("name", myNameWang);

            EndpointUser wangMajor = EndpointUser.builder()
                    .userId("example_user_10")
                    .userAttributes(wangName)
                    .build();

            // Create an EndpointBatchItem object for Mary Major.
            EndpointRequest wangXiulanEndpoint = EndpointRequest.builder()
                    .channelType(ChannelType.EMAIL)
                    .address("wang_xiulan@example.com")
                    .attributes(myMapWang)
                    .user(wangMajor)
                    .build();

            // Adds multiple endpoint definitions to a single request object.
            UpdateEndpointRequest endpointList = UpdateEndpointRequest.builder()
                    .applicationId(applicationId)
                    .endpointRequest(wangXiulanEndpoint)
                    .endpointId(endPointId)
                    .build();

            UpdateEndpointResponse result = pinpoint.updateEndpoint(endpointList);
            System.out.format("Update endpoint result: %s\n", result.messageBody().message());

        } catch (PinpointException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

전체 SDK 예제를 보려면 [GitHub](https://github.com/)의 [AddExampleUser.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/pinpoint/src/main/java/com/example/pinpoint/AddExampleUser.java)를 참조하세요.

------
#### [ HTTP ]

REST API에 HTTP 요청을 직접 수행하여 Amazon Pinpoint를 사용할 수 있습니다.

**Example 사용자 정의가 포함된 엔드포인트 Put 요청**  
엔드포인트에 사용자를 추가하려면 다음 URI에서 [엔드포인트](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html) 리소스에 `PUT` 요청을 발행합니다.  
`/v1/apps/application-id/endpoints/endpoint-id`  
위치:  
+ *application-id*는 엔드포인트를 추가하거나 업데이트할 Amazon Pinpoint 프로젝트의 ID입니다.
+ *endpoint-id*는 새 엔드포인트에 할당할 ID 또는 업데이트할 기존 엔드포인트의 ID입니다.
요청에 필수 헤더를 포함시키고 [EndpointRequest](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#apps-application-id-endpoints-endpoint-id-schemas) JSON을 본문으로 제공합니다. 요청 본문은 사용자가 포함될 수 있는 새 엔드포인트를 정의할 수 있습니다. 또는 기존 엔드포인트를 업데이트하려면 변경할 속성만 제공할 수 있습니다. 다음 예제에서는 사용자 속성만 제공하여 사용자를 기존 엔드포인트에 추가합니다.  

```
PUT /v1/apps/application_id/endpoints/example_endpoint HTTP/1.1
Host: pinpoint.us-east-1.amazonaws.com
X-Amz-Date: 20180415T182538Z
Content-Type: application/json
Accept: application/json
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180501/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;content-length;content-type;host;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170
Cache-Control: no-cache

{ 
    "User":{ 
        "UserId":"example_user",
        "UserAttributes":{ 
            "FirstName":"Wang",
            "LastName":"Xiulan",
            "Gender":"Female",
            "Age":"39"
        }
    }
}
```
요청이 성공하면 다음과 비슷한 응답이 수신됩니다.  

```
{
    "RequestID": "67e572ed-41d5-11e8-9dc5-db288f3cbb72",
    "Message": "Accepted"
}
```

------

## 관련 정보
<a name="audience-define-user-related"></a>

지원되는 HTTP 메서드 및 요청 파라미터를 비롯하여, Amazon Pinpoint API의 엔드포인트 리소스에 대한 자세한 내용은 *Amazon Pinpoint API 참조*의 [엔드포인트](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html) 섹션을 참조하세요.

변수를 사용하여 메시지를 개인화하는 방법에 대한 자세한 내용은 *Amazon Pinpoint 사용 설명서*의 [메시지 변수](https://docs.aws.amazon.com/pinpoint/latest/userguide/campaigns-message.html#campaigns-message-variables.html) 섹션을 참조하세요.

사용자 ID 목록을 가져와서 세그먼트를 정의하는 방법을 알아보려면 *Amazon Pinpoint 사용 설명서*의 [세그먼트 가져오기](https://docs.aws.amazon.com/pinpoint/latest/userguide/segments-importing.html) 섹션을 참조하세요.

최대 100개의 사용자 ID에 DM(Direct Message)을 보내는 방법에 대한 내용은 *Amazon Pinpoint API 참조*의 [사용자 메시지](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-users-messages.html) 섹션을 참조하세요.

할당할 수 있는 사용자 속성의 수를 포함해 엔드포인트에 적용되는 할당량에 대한 자세한 내용은 [엔드포인트 할당량](quotas.md#quotas-endpoint) 단원을 참조하십시오.