

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

# Amazon Personalize 지표 속성 생성
<a name="creating-metric-attribution"></a>

**중요**  
 지표 어트리뷰션을 생성하고 이벤트를 기록하거나 증분 대량 데이터를 가져온 후에는 지표당 월별 CloudWatch 비용이 발생합니다. CloudWatch 요금에 대한 정보는 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/) 페이지를 참조하세요. CloudWatch에 지표를 더 이상 보내지 않으려면 [지표 어트리뷰션을 삭제](deleting-metric-attribution.md)합니다.

지표 보고서 생성을 시작하려면 지표 어트리뷰션을 생성하고 상호작용 데이터를 가져옵니다. 지표 어트리뷰션을 만들 때는 보고할 이벤트 유형 목록을 지정합니다. 각 이벤트 유형에 대해 Personalize가 데이터를 수집할 때 적용하는 함수를 지정합니다. 사용 가능한 함수에는 `SUM(DatasetType.COLUMN_NAME)`및 `SAMPLECOUNT()`이 포함됩니다.

 예를 들어 온라인 동영상 스트리밍 앱에서 추천 클릭률과 총 시청 영화 길이(항목 데이터세트의 각 동영상에 `LENGTH`속성이 포함된 경우)라는 두 가지 지표를 추적하고 싶을 수 있습니다. 지표 어트리뷰션을 만들고 각각 이벤트 유형과 함수가 지표 두 개를 추가할 수 있습니다. 첫 번째는 `SAMPLECOUNT()`함수가 있는 `Click`이벤트 유형에 대한 것일 수 있습니다. 두 번째는 `SUM(Items.LENGTH)`함수가 있는 `Watch`이벤트 유형에 대한 것일 수 있습니다.

`SUM()` 함수는 항목 및 항목 상호 작용 데이터 세트의 숫자 열에만 적용할 수 있습니다. `SUM()` 함수를 항목 데이터세트의 열에 적용하려면 먼저 항목 메타데이터를 가져와야 합니다.

 Personalize 콘솔 AWS Command Line Interface또는 AWS SDKS를 사용하여 지표 어트리뷰션을 생성할 수 있습니다.

**Topics**
+ [지표 어트리뷰션 생성(콘솔)](#create-metric-attribution-console)
+ [지표 어트리뷰션 생성(AWS CLI)](#create-metric-attribution-cli)
+ [지표 어트리뷰션(AWS SDKs) 생성](#create-metric-attribution-sdk)

## 지표 어트리뷰션 생성(콘솔)
<a name="create-metric-attribution-console"></a>

 Personalize 콘솔에서 지표 어트리뷰션을 생성하려면 **지표 어트리뷰션** 페이지로 이동하여 **지표 어트리뷰션 생성**을 선택합니다. 지표 어트리뷰션을 생성할 때 선택적 S3 버킷 경로, Personalize IAM 서비스 역할 및 보고할 지표 목록을 지정합니다.

 Amazon Personalize 콘솔에서 항목 상호 작용 데이터 세트 가져오기 작업을 생성하는 경우 옵션을 통해 새 탭에서 지표 어트리뷰션을 만들 수 있습니다. 그런 다음 가져오기 작업으로 돌아가 작업을 완료할 수 있습니다. 이미 **지표 어트리뷰션 구성** 페이지에 있는 경우 4단계로 건너뛰어도 됩니다.

**지표 어트리뷰션을 생성하려면**

1. [https://console.aws.amazon.com/acm-pca/home](https://console.aws.amazon.com/personalize/home)에서 Personalize 콘솔을 열고 계정에 로그인합니다.

1. 데이터세트 그룹을 선택합니다.

1. 탐색 창의 **사용자 지정 리소스**에서 **지표 어트리뷰션**을 선택합니다.

1. **지표 어트리뷰션 세부 정보**에서 **지표 어트리뷰션 생성**을 선택합니다.

1. **지표 어트리뷰션 구성** 페이지에서 지표 어트리뷰션 이름을 지정합니다.

1. S3에 지표를 게시하려면, **S3 데이터 출력 경로**에 대상 S3 버킷을 입력합니다. 이렇게 하면 데이터세트 가져오기 작업을 생성할 때마다 지표를 게시할 수 있는 옵션이 활성화됩니다. 다음 구문을 사용합니다.

   **s3://amzn-s3-demo-bucket/<folder> path>**

1. 암호화 AWS KMS 에를 사용하는 경우 **KMS 키 ARN**에 키의 Amazon 리소스 이름(ARN)을 AWS KMS 입력합니다. 사용자가 Personalize와 Personalize IAM 서비스 역할에 키를 사용할 권한을 부여해야만 합니다. 자세한 내용은 [Personalize에 AWS KMS 키 사용 권한 부여](granting-personalize-key-access.md)단원을 참조하세요.

1. **IAM 역할**에서 새 서비스 역할 생성 또는 기존 역할 사용 중 하나를 선택합니다. 선택한 역할에 CloudWatch에 대한 `PutMetricData`권한이 있어야 합니다. S3에 게시하려는 경우 역할에 S3 버킷에 대한 `PutObject`권한이 있어야 합니다.

   [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성한 역할을 사용하려면 CloudWatch 및 S3에 대한 정책을 추가해야 할 수 있습니다.

   정책 예제는 [Personalize에 CloudWatch에 대한 액세스 권한 부여](metric-attribution-requirements.md#metric-attribution-cw-permissions)및 [Personalize에 S3 버킷에 대한 액세스 권한 부여](metric-attribution-requirements.md#metric-attribution-s3-permissions)단원을 참조하세요.

1. **다음**을 선택합니다.

1. **지표 어트리뷰션 정의** 페이지에서 지표 정의 방법을 선택합니다. 빌더 도구를 사용하려면 **지표 어트리뷰션 작성**을 선택합니다. **지표 어트리뷰션 입력**을 선택하여 지표를 JSON 형식으로 입력합니다.
   + **지표 어트리뷰션 작성**을 선택하는 경우 각 지표에 대해 이름, 이벤트 유형을 제공하고 함수를 선택합니다. `SUM()` 함수의 경우 열 이름을 선택합니다. 지표를 더 추가하려면 **지표 어트리뷰션 추가**를 선택합니다.
   + **지표 어트리뷰션 입력**을 선택한 경우 각 지표를 JSON 형식으로 입력합니다. 아래에서는 지표 형식을 지정하는 방법을 보여줍니다.

     ```
     {
         "EventType": "watch",
         "MetricName": "MinutesWatchedTracker", 
         "MetricMathExpression": "SUM(Items.LENGTH)"
     }
     ```

1. **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 새 지표 어트리뷰션에 대한 세부 정보를 검토합니다. 변경하려면 **이전**을 선택합니다. 지표 어트리뷰션을 만들려면 **생성**을 선택합니다. 지표 어트리뷰션이 활성화되면 데이터 가져오기를 시작하고 그 결과를 볼 수 있습니다. 결과 보기에 대한 자세한 내용은 [CloudWatch에서 지표 데이터의 그래프 보기](metric-attribution-results-cloudwatch.md)단원을 참조하세요. 결과를 Amazon S3에 게시하는 방법에 대한 자세한 내용은 [Amazon S3에 지표 어트리뷰션 보고서 게시](metric-attribution-results-s3.md) 섹션을 참조하세요.

## 지표 어트리뷰션 생성(AWS CLI)
<a name="create-metric-attribution-cli"></a>

 다음 코드는 AWS Command Line Interface에서 지표 어트리뷰션을 생성하는 방법을 보여줍니다. 지정하는 역할에 CloudWatch에 대한 `PutMetricData`권한이 있어야 하며, S3에 게시하는 경우 S3 버킷에 대한 `PutObject`권한이 있어야 합니다. [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성한 역할을 사용하려면 CloudWatch 및 S3에 대한 정책을 추가해야 할 수 있습니다. 정책 예제는 [Personalize에 CloudWatch에 대한 액세스 권한 부여](metric-attribution-requirements.md#metric-attribution-cw-permissions)및 [Personalize에 S3 버킷에 대한 액세스 권한 부여](metric-attribution-requirements.md#metric-attribution-s3-permissions)단원을 참조하세요.

 각 지표에 대해 이름, 이벤트 유형 및 표현식(함수)을 지정합니다. 사용 가능한 함수에는 `SUM(DatasetType.COLUMN_NAME)`및 `SAMPLECOUNT()`이 포함됩니다. SUM() 함수의 경우 데이터세트 유형과 열 이름을 지정합니다. 예를 들어 `SUM(Items.LENGTH)`입니다. 각 파라미터에 대한 자세한 내용은 [CreateMetricAttribution](API_CreateMetricAttribution.md)단원을 참조하세요.

```
aws personalize create-metric-attribution \
--name metric attribution name \
--dataset-group-arn dataset group arn \
--metrics-output-config "{\"roleArn\": \"Amazon Personalize service role ARN\", \"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://amzn-s3-demo-bucket/folder-name/\"}}" \
--metrics "[{
  \"eventType\": \"event type\",
  \"expression\": \"SUM(DatasetType.COLUMN_NAME)\",
  \"metricName\": \"metric name\"
}]"
```

## 지표 어트리뷰션(AWS SDKs) 생성
<a name="create-metric-attribution-sdk"></a>

 다음 코드는 Python용 SDK(Boto3)에서 지표 어트리뷰션을 생성하는 방법을 보여줍니다. 지정하는 역할에 CloudWatch에 대한 `PutMetricData`권한이 있어야 하며, S3에 게시하는 경우 S3 버킷에 대한 `PutObject`권한이 있어야 합니다. [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성한 역할을 사용하려면 CloudWatch 및 S3에 대한 정책을 추가해야 할 수 있습니다. 정책 예제는 [Personalize에 CloudWatch에 대한 액세스 권한 부여](metric-attribution-requirements.md#metric-attribution-cw-permissions)및 [Personalize에 S3 버킷에 대한 액세스 권한 부여](metric-attribution-requirements.md#metric-attribution-s3-permissions)단원을 참조하세요.

 각 지표에 대해 이름, 이벤트 유형 및 표현식(함수)을 지정합니다. 사용 가능한 함수에는 `SUM(DatasetType.COLUMN_NAME)`및 `SAMPLECOUNT()`이 포함됩니다. SUM() 함수의 경우 데이터세트 유형과 열 이름을 지정합니다. 예를 들어 `SUM(Items.LENGTH)`입니다. 각 파라미터에 대한 자세한 내용은 [CreateMetricAttribution](API_CreateMetricAttribution.md)단원을 참조하세요.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

metricsList = [{ 
      "eventType": "event type",
      "expression": "SUM(DatasetType.COLUMN_NAME)",
      "metricName": "metric name"
}]

outputConfig = {
  "roleArn": "Amazon Personalize service role ARN", 
  "s3DataDestination": {
    "kmsKeyArn": "key ARN", 
    "path": "s3://amzn-s3-demo-bucket/<folder>"
  }
}
response = personalize.create_metric_attribution(
  name = 'metric attribution name',
  datasetGroupArn = 'dataset group arn',
  metricsOutputConfig = outputConfig,
  metrics = metricsList
)

metric_attribution_arn = response['metricAttributionArn']

print ('Metric attribution ARN: ' + metric_attribution_arn)

description = personalize.describe_metric_attribution(
    metricAttributionArn = metric_attribution_arn)['metricAttribution']

print('Name: ' + description['name'])
print('ARN: ' + description['metricAttributionArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

```
public static String createMetricAttribution(PersonalizeClient personalizeClient,
                                             String eventType,
                                             String expression,
                                             String metricName,
                                             String metricAttributionName,
                                             String roleArn,
                                             String s3Path,
                                             String kmsKeyArn,
                                             String datasetGroupArn) {
    String metricAttributionArn = "";

    try {

        MetricAttribute attribute = MetricAttribute.builder()
                .eventType(eventType)
                .expression(expression)
                .metricName(metricName)
                .build();

        ArrayList<MetricAttribute> metricAttributes = new ArrayList<>();
        metricAttributes.add(attribute);

        S3DataConfig s3DataDestination = S3DataConfig.builder()
                .kmsKeyArn(kmsKeyArn)
                .path(s3Path)
                .build();

        MetricAttributionOutput outputConfig = MetricAttributionOutput.builder()
                .roleArn(roleArn)
                .s3DataDestination(s3DataDestination)
                .build();

        CreateMetricAttributionRequest createMetricAttributionRequest = CreateMetricAttributionRequest.builder()
                .name(metricAttributionName)
                .datasetGroupArn(datasetGroupArn)
                .metrics(metricAttributes)
                .metricsOutputConfig(outputConfig)
                .build();
        CreateMetricAttributionResponse createMetricAttributionResponse = personalizeClient.createMetricAttribution(createMetricAttributionRequest);

        metricAttributionArn = createMetricAttributionResponse.metricAttributionArn();
        System.out.println("Metric attribution ARN: " + metricAttributionArn);
        return metricAttributionArn;
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
    return "";
}
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients and commands using ES6 syntax.
import { CreateMetricAttributionCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";
  
// create personalizeClient
const personalizeClient = new PersonalizeClient({
  region: "REGION"
});

// set the metric attribution param
export const createMetricAttributionParam = {
  name: "METRIC_ATTRIBUTION_NAME",            /* required */
  datasetGroupArn: "DATASET_GROUP_ARN",       /* required */
  metricsOutputConfig: {
    roleArn: "ROLE_ARN",                      /* required */
    s3DataDestination: {                
      kmsKeyArn: "KEY_ARN",                                                      /* optional */
      path: "s3://amzn-s3-demo-bucket/<folderName>/",    /* optional */
    },
  },
  metrics: [                        
    {
      eventType: "EVENT_TYPE",                      /* required for each metric */
      expression: "SUM(DatasetType.COLUMN_NAME)",   /* required for each metric */
      metricName: "METRIC_NAME",                    /* required for each metric */
    }
  ]
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateMetricAttributionCommand(createMetricAttributionParam)
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------