

더 이상 Amazon Machine Learning 서비스를 업데이트하거나 새 사용자를 받지 않습니다. 이 설명서는 기존 사용자에 제공되지만 더 이상 업데이트되지 않습니다. 자세한 내용은 [머신 러닝이란?](https://docs.aws.amazon.com/machine-learning/latest/dg/what-is-amazon-machine-learning.html) 단원을 참조하세요.

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

# Amazon Machine Learning 참조
<a name="amazon-machine-learning-reference"></a>

**Topics**
+ [Amazon S3에서 데이터를 읽을 수 있는 권한을 Amazon ML에 부여](granting-amazon-ml-permissions-to-read-your-data-from-amazon-s3.md)
+ [Amazon S3에 예측을 출력할 수 있는 권한을 Amazon ML에 부여](granting-amazon-ml-permissions-to-output-predictions-to-amazon-s3.md)
+ [Amazon ML 리소스에 대한 액세스 제어 - IAM 사용](controlling-access-to-amazon-ml-resources-by-using-iam.md)
+ [교차 서비스 혼동된 대리인 방지](cross-service-confused-deputy-prevention.md)
+ [비동기 작업의 종속성 관리](dependency-management-of-asynchronous-operations.md)
+ [요청 상태 확인](operation-request-status.md)
+ [시스템 제한](system-limits.md)
+ [모든 객체의 이름 및 ID](names-and-ids-for-all-objects.md)
+ [객체 수명](object-lifetimes.md)

# Amazon S3에서 데이터를 읽을 수 있는 권한을 Amazon ML에 부여
<a name="granting-amazon-ml-permissions-to-read-your-data-from-amazon-s3"></a>

 Amazon S3의 입력 데이터에서 데이터 소스 객체를 생성하려면 입력 데이터가 저장되는 S3 위치에 대해 Amazon ML에 다음 권한을 부여해야 합니다.
+  S3 버킷 및 접두사에 대한 **GetObject** 권한.
+  S3 버킷에 대한 **ListBucket** 권한. 다른 작업과 달리 **ListBucket**에는 (접두사가 아닌) 버킷 전체 권한을 부여해야 합니다. 하지만 **Condition** 절을 사용하여 특정 접두사로 권한 범위를 지정할 수 있습니다.

 Amazon ML 콘솔을 사용하여 데이터 소스를 생성하는 경우 이러한 권한을 버킷에 추가할 수 있습니다. 마법사의 단계를 완료하면 추가할 것인지 확인하는 메시지가 표시됩니다. 다음 예제 정책에서는 ML이 샘플 위치 s3://*examplebucket*/*exampleprefix*에서 데이터를 읽을 수 있는 권한을 부여하는 동시에 **ListBucket** 권한의 범위를 *exampleprefix* 입력 경로로만 지정하는 방법을 보여줍니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::examplebucket/exampleprefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::examplebucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "exampleprefix/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

이 정책을 데이터에 적용하려면 데이터가 저장되는 S3 버킷과 연결된 정책 설명을 편집해야 합니다.

**S3 버킷의 권한 정책을 편집하려면(이전 콘솔 사용)**

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

1. 데이터가 있는 버킷 이름을 선택합니다.

1. **속성**을 선택합니다.

1. **버킷 정책 편집**을 선택합니다.

1. 위에 표시된 정책을 입력하고 필요에 맞게 사용자 지정한 다음 **저장**을 선택합니다.

1. **저장**을 선택합니다.



**S3 버킷의 권한 정책을 편집하려면(새 콘솔 사용)**

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

1. 버킷 이름을 선택한 후 **권한**을 선택합니다.

1. **버킷 정책**을 선택합니다.

1. 위에 표시된 정책을 입력하고 필요에 맞게 사용자 지정합니다.

1. **저장**을 선택합니다.

# Amazon S3에 예측을 출력할 수 있는 권한을 Amazon ML에 부여
<a name="granting-amazon-ml-permissions-to-output-predictions-to-amazon-s3"></a>

 배치 예측 작업의 결과를 Amazon S3에 출력하려면 Amazon ML에 출력 위치에 대한 다음 권한을 부여해야 합니다. 이 권한은 배치 예측 생성 작업에 대한 입력으로 제공됩니다.
+  S3 버킷 및 접두사에 대한 **GetObject** 권한.
+  S3 버킷 및 접두사에 대한 **PutObject** 권한.
+  S3 버킷과 접두사에 대한 **PutObjectAcl**.
  +  ML은 객체 생성 후 미리 준비된 [ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) 버킷 소유자 전체 제어 권한을 계정에 부여할 수 있으려면 이 권한이 필요합니다.
+  S3 버킷에 대한 **ListBucket** 권한. 다른 작업과 달리 **ListBucket**에는 (접두사가 아닌) 버킷 전체 권한을 부여해야 합니다. 하지만 **Condition** 절을 사용하여 특정 접두사로 권한 범위를 지정할 수 있습니다.

 Amazon ML 콘솔을 사용하여 배치 예측 요청을 생성하는 경우 이러한 권한을 버킷에 추가할 수 있습니다. 마법사의 단계를 완료하면 추가 여부를 확인하라는 메시지가 표시됩니다.

 다음 예제 정책에서는 ML이 샘플 위치 s3://examplebucket/exampleprefix 에 데이터를 쓸 수 있는 권한을 부여하는 동시에 **ListBucket** 권한의 범위를 exampleprefix 입력 경로로만 지정하고 ML이 출력 접두사에 객체 ACL을 설정할 수 있는 권한을 부여하는 방법을 보여줍니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::examplebucket/exampleprefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": "s3:PutObjectAcl",
            "Resource": "arn:aws:s3:::examplebucket/exampleprefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::examplebucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "exampleprefix/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

이 정책을 데이터에 적용하려면 데이터가 저장되는 S3 버킷과 관련된 정책 설명을 편집해야 합니다.

**S3 버킷의 권한 정책을 편집하려면(이전 콘솔 사용)**

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

1. 데이터가 있는 버킷 이름을 선택합니다.

1. **속성**을 선택합니다.

1. **버킷 정책 편집**을 선택합니다.

1. 위에 표시된 정책을 입력하고 필요에 맞게 사용자 지정한 다음 **저장**을 선택합니다.

1. **저장**을 선택합니다.



**S3 버킷의 권한 정책을 편집하려면(새 콘솔 사용)**

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

1. 버킷 이름을 선택한 후 **권한**을 선택합니다.

1. **버킷 정책**을 선택합니다.

1. 위에 표시된 정책을 입력하고 필요에 맞게 사용자 지정합니다.

1. **저장**을 선택합니다.

# Amazon ML 리소스에 대한 액세스 제어 - IAM 사용
<a name="controlling-access-to-amazon-ml-resources-by-using-iam"></a>

AWS Identity and Access Management (IAM)를 사용하면 사용자의 AWS 서비스 및 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. IAM을 사용하면 사용자, 그룹 및 역할을 생성 및 관리하고 권한을 사용하여 리소스에 대한 액세스를 허용 및 거부할 수 있습니다. IAM과 Amazon Machine Learning(Amazon ML)을 함께 사용하면 조직 내 사용자별로 특정 리소스의 사용 권한을 제어할 수 있습니다.

 IAM을 사용하여 다음을 수행할 수 있습니다.
+  계정의 사용자와 그룹 생성 
+  계정 사용자 각각에 고유한 보안 인증 할당 
+  작업 수행 시 각 사용자의 리소스 사용 권한 제어 
+  계정의 사용자 간에 리소스를 쉽게 공유 
+  계정에 적용할 규칙 생성 및 이들 역할을 수임할 수 있는 사용자나 서비스를 규정하기 위해 이들 역할에 대한 권한 관리 
+ IAM에서 역할을 생성하고 권한을 관리하여 역할을 맡는 엔티티 또는 서비스가 수행할 수 있는 작업을 제어할 수 있습니다. 어떤 개체가 해당 역할을 맡도록 허용된 개체를 정의할 수도 있습니다.



 조직에 이미 IAM 자격 증명이 있으면 이를 사용해 리소스를 사용하는 작업 권한을 부여할 수 있습니다.

IAM에 대한 자세한 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)를 참조하세요.

## IAM 정책 구문
<a name="policy-syntax"></a>

 IAM 정책은 하나 이상의 구문으로 구성된 JSON 문서입니다. 각 구문의 구조는 다음과 같습니다.

```
{
    "Statement":[{
        "Effect":"effect",
        "Action":"action",
        "Resource":"arn",
        "Condition":{
            "condition operator":{
                "key":"value"
            }
        }
    }]
}
```

 정책 구문은 다음 요소로 구성됩니다.
+  **효과:** 명령문의 뒷부분에서 지정할 리소스 및 API 작업 사용 권한을 제어합니다. 유효 값은 `Allow` 및 `Deny`입니다. 기본적으로 IAM 사용자에게는 리소스 및 API 작업을 사용할 권한이 없으므로 모든 요청이 거부됩니다. 명시적 `Allow`은 기본 설정 보다 우선합니다. 명시적 `Deny`은 어떤 `Allows` 보다 우선합니다.
+  **작업**: 권한을 부여하거나 거부할 특정 API 작업입니다.
+  **리소스**: 작업의 영향을 받는 리소스입니다. 구문에서 리소스를 지정하려면 Amazon 리소스 이름(ARN)을 사용합니다.
+  **조건(선택 사항)**: 정책이 적용되는 시기를 제어합니다.

 IAM 정책을 간단하게 생성하고 관리하려면 IAM 정책 생성기 및 IAM 정책 시뮬레이터를 사용합니다.

## Amazon MLAmazon ML에 대한 IAM 정책 작업 지정
<a name="actions-for-amazon-ml"></a>

 IAM 정책 구문에서 IAM을 지원하는 모든 서비스의 API 작업을 지정할 수 있습니다. ML API 작업에 대한 정책 구문을 생성할 때는 다음 예와 같이 API 작업의 이름 앞에 `machinelearning:`을 추가하세요.
+ `machinelearning:CreateDataSourceFromS3`
+ `machinelearning:DescribeDataSources`
+ `machinelearning:DeleteDataSource`
+ `machinelearning:GetDataSource`

 단일 구문에서 여러 작업을 지정하려면 다음과 같이 쉼표로 구분합니다.

```
"Action": ["machinelearning:action1", "machinelearning:action2"]
```

와일드카드를 사용하여 여러 작업을 지정할 수도 있습니다. 예를 들어 다음과 같이 이름이 "Get"으로 시작되는 모든 작업을 지정할 수 있습니다.

```
"Action": "machinelearning:Get*"
```

모든 Amazon ML 작업을 지정하려면 다음과 같이 \$1 와일드카드를 사용합니다.

```
"Action": "machinelearning:*"
```

 ML API 작업의 전체 목록은 [머신 러닝 API 참조](https://docs.aws.amazon.com/machine-learning/latest/APIReference/) 단원을 참조하세요.

## IAM 정책에서 Amazon ML 리소스용 ARN 지정
<a name="amazon-resource-names-arns-for-amazon-ml"></a>

 IAM 정책 구문은 하나 이상의 리소스에 적용됩니다. ARN으로 정책 리소스를 지정합니다.

 Amazon ML 리소스의 ARN을 지정하려면 다음 형식을 사용합니다.

 최대 1GB"리소스": `arn:aws:machinelearning:region:account:resource-type/identifier `

 다음 예제에서는 공통 ARN을 지정하는 방법을 보여줍니다.

 데이터 소스 ID: `my-s3-datasource-id `

```
"Resource":
arn:aws:machinelearning:<region>:<your-account-id>:datasource/my-s3-datasource-id
```

 ML 모델 ID: `my-ml-model-id `

```
"Resource":
arn:aws:machinelearning:<region>:<your-account-id>:mlmodel/my-ml-model-id
```

 배치 예측 ID: `my-batchprediction-id `

```
"Resource":
arn:aws:machinelearning:<region>:<your-account-id>:batchprediction/my-batchprediction-id
```

 평가 ID: `my-evaluation-id `

```
"Resource": arn:aws:machinelearning:<region>:<your-account-id>:evaluation/my-evaluation-id
```

## Amazon SNS에 대한 정책 예제
<a name="example-policies-for-amazon-ml"></a>

 **예제 1: 사용자가 기계 학습 리소스의 메타데이터를 읽을 수 있도록 허용** 

다음 정책은 사용자나 그룹이 지정된 리소스에서 [DescribeDataSources](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_DescribeDataSources.html), [DescribeMLModels](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_DescribeMLModels.html), [DescribeBatchPredictions](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_DescribeBatchPredictions.html), [DescribeEvaluations](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_DescribeEvaluations.html), [GetDataSource](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_GetDataSource.html), [GetMLModel](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_GetMLModel.html), [GetBatchPrediction](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_GetBatchPrediction.html) 및 [GetEvaluation](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_GetEvaluation.html) 작업을 수행하여 데이터 소스, ML 모델, 배치 예측 및 평가의 메타데이터를 읽을 수 있도록 허용합니다. Describe \$1 작업 권한은 특정 리소스로 제한할 수 없습니다.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "machinelearning:Get*" ], "Resource": [
        "arn:aws:machinelearning:us-east-1:123456789012:datasource/S3-DS-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:datasource/REDSHIFT-DS-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:mlmodel/ML-MODEL-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:batchprediction/BP-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:evaluation/EV-ID1"
    ] }, { "Effect": "Allow", "Action": [ "machinelearning:Describe*" ], "Resource": [ "*" ] } ]
    }
```

------

 **예제 2: 사용자가 기계 학습 리소스를 만들 수 있도록 허용** 

 다음 정책은 사용자나 그룹이 `CreateDataSourceFromS3`, `CreateDataSourceFromRedshift`, `CreateDataSourceFromRDS`, `CreateMLModel`, `CreateBatchPrediction` 및 `CreateEvaluation` 작업을 수행하여 기계 학습 데이터 소스, ML 모델, 배치 예측 및 평가를 생성할 수 있도록 허용합니다. 이들 작업의 권한을 특정 리소스로 제한할 수 없습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "machinelearning:CreateDataSourceFrom*",
                "machinelearning:CreateMLModel",
                "machinelearning:CreateBatchPrediction",
                "machinelearning:CreateEvaluation"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

 **예제 3: 사용자가 실시간 엔드포인트를 생성 및 삭제하고 ML 모델에서 실시간 예측을 수행하도록 허용** 

 다음 정책은 사용자나 그룹이 실시간 엔드포인트를 생성 및 삭제하고, 해당 모델에서 `CreateRealtimeEndpoint`, `DeleteRealtimeEndpoint` 및 `Predict` 작업을 수행하여 특정 ML 모델에 대한 실시간 예측을 수행할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "machinelearning:CreateRealtimeEndpoint", "machinelearning:DeleteRealtimeEndpoint",
    "machinelearning:Predict" ], "Resource": [
        "arn:aws:machinelearning:us-east-1:123456789012:mlmodel/ML-MODEL"
    ] } ] }
```

------

 **예제 4: 사용자가 특정 리소스를 업데이트하고 삭제하도록 허용** 

 다음 정책은 사용자나 그룹이 계정의 해당 리소스에서 `UpdateDataSource`, `UpdateMLModel`, `UpdateBatchPrediction`, `UpdateEvaluation`, `DeleteDataSource`, `DeleteMLModel`, `DeleteBatchPrediction` 및 `DeleteEvaluation` 작업을 수행할 권한을 부여하여 계정의 특정 리소스를 업데이트하고 삭제할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "machinelearning:Update*", "machinelearning:DeleteDataSource", "machinelearning:DeleteMLModel",
    "machinelearning:DeleteBatchPrediction", "machinelearning:DeleteEvaluation" ], "Resource": [
        "arn:aws:machinelearning:us-east-1:123456789012:datasource/S3-DS-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:datasource/REDSHIFT-DS-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:mlmodel/ML-MODEL-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:batchprediction/BP-ID1",
        "arn:aws:machinelearning:us-east-1:123456789012:evaluation/EV-ID1"
    ] } ] }
```

------

 **예제 5: 모든 ML 작업 허용** 

 다음 정책은 사용자나 그룹이 모든 Amazon ML 작업을 사용할 수 있도록 허용합니다. 이 정책은 모든 기계 학습 리스소에 대한 전체 액세스 권한을 부여하므로 관리자로만 제한해야 합니다.

------
#### [ JSON ]

****  

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

------

# 교차 서비스 혼동된 대리인 방지
<a name="cross-service-confused-deputy-prevention"></a>

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 에서 AWS교차 서비스 가장은 혼동된 대리자 문제를 초래할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 직접 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS 에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 위탁자를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.

Amazon 기계 학습이 리소스에 다른 서비스를 제공하는 권한을 제한하려면 리소스 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 만약 `aws:SourceArn` 값에 S3 버킷 ARN과 같은 계정 ID가 포함되어 있지 않은 경우, 권한을 제한하려면 두 전역 조건 컨텍스트 키를 모두 사용해야 합니다. 두 전역 조건 컨텍스트 키와 계정을 포함한 `aws:SourceArn` 값을 모두 사용하는 경우, `aws:SourceAccount` 값 및 `aws:SourceArn` 값의 계정은 동일한 정책 명령문에서 사용할 경우 반드시 동일한 계정 ID를 사용해야 합니다. 하나의 리소스만 교차 서비스 액세스와 연결되도록 허용하려는 경우 `aws:SourceArn`을 사용하세요. 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`을(를) 사용합니다.

혼동된 대리자 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모를 경우 또는 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드(`*`)를 포함한 `aws:SourceArn`전역 조건 컨텍스트 키를 사용합니다. 예제: `arn:aws:servicename:*:123456789012:*`.

다음 예에서는 S3 버킷에서 데이터를 읽을 때 ML에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여줍니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::examplebucket/exampleprefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "machinelearning.amazonaws.com"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::examplebucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "exampleprefix/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

# 비동기 작업의 종속성 관리
<a name="dependency-management-of-asynchronous-operations"></a>

 Amazon ML의 배치 작업은 성공적으로 완료되기 위해 다른 작업에 의존합니다. 이러한 종속성을 관리하기 위해 Amazon ML은 종속성이 있는 요청을 식별하고 작업이 완료되었는지 확인합니다. 작업이 완료되지 않은 경우 Amazon ML은 해당 요청이 의존하는 작업이 완료될 때까지 초기 요청을 따로 보관합니다.

 배치 작업 간에는 몇 가지 종속성이 있습니다. 예를 들어 ML 모델을 만들려면 먼저 ML 모델을 학습시킬 수 있는 데이터 소스를 만들어야 합니다. Amazon ML은 사용 가능한 데이터 소스가 없는 경우 ML 모델을 학습시킬 수 없습니다.

 하지만 Amazon ML은 비동기 작업에 대한 종속성 관리를 지원합니다. 예를 들어, 데이터 소스에서 ML 모델을 학습시키라는 요청을 보내기 전에 데이터 통계가 계산될 때까지 기다릴 필요가 없습니다. 대신, 데이터 소스가 생성되자마자 데이터 소스를 사용하여 ML 모델을 학습시키라는 요청을 보낼 수 있습니다. Amazon ML은 데이터 소스 통계가 계산될 때까지 실제로 학습 작업을 시작하지 않습니다. CreateMLModel 요청은 통계가 계산될 때까지 대기열에 저장됩니다. 계산이 완료되면 Amazon ML은 즉시 CreateMLModel 작업을 실행하려고 시도합니다. 마찬가지로, 학습이 완료되지 않은 ML 모델에 대한 배치 예측 및 평가 요청을 전송할 수 있습니다.

 다음 표에는 다양한 Amazon ML 작업을 진행하는 데 필요한 요구 사항이 나와 있습니다.


|  **이를 위해서는...** |  **...이(가) 있어야 합니다**  | 
| --- | --- | 
|  ML 모델 생성(createMLModel)  |  계산된 데이터 통계가 포함된 데이터 소스  | 
|  배치 예측 생성(createBatchPrediction)  |   데이터 소스   ML 모델   | 
|  배치 평가 생성(createBatchEvaluation)  |   데이터 소스   ML 모델   | 

# 요청 상태 확인
<a name="operation-request-status"></a>

요청을 제출하면 Amazon Machine Learning(Amazon ML) API를 사용하여 요청 상태를 확인할 수 있습니다. 예를 들어 `createMLModel` 요청을 제출하면 `describeMLModel` 직접 호출을 사용하여 상태를 확인할 수 있습니다. Amazon ML은 다음 상태 중 하나로 응답합니다.


|  **상태**  |  **정의**  | 
| --- | --- | 
|  PENDING  |   Amazon ML에서 요청을 검증하는 중입니다.  또는   Amazon ML이 요청을 실행하기 전에 계산 리소스를 사용 가능한 상태가 될 때까지 기다립니다. 이는 계정이 동시 실행 배치 작업 요청의 최대 수를 초과한 경우 발생할 수 있습니다. 이 경우 실행 중인 다른 요청이 완료되거나 취소되면 상태가 **진행 중**으로 전환됩니다.  또는   Amazon ML이 요청이 필요한 배치 작업이 완료되기를 기다립니다.  | 
|  진행 중  |  요청이 여전히 실행 중입니다. | 
|  완료됨  |  요청이 완료되었으며 객체를 사용하거나(ML 모델 및 데이터 소스) 조회할(배치 예측 및 평가) 준비가 되었습니다. | 
|  FAILED  |  제공한 데이터에 문제가 있거나 작업을 취소했습니다. 예를 들어 완료에 실패한 데이터 소스의 데이터 통계를 계산하려고 하면 유효하지 않음 또는 실패 상태 메시지가 표시될 수 있습니다. 오류 메시지가 작업이 성공적으로 완료되지 않은 이유를 설명합니다. | 
|  삭제됨  |  개체가 이미 삭제되었습니다. | 

Amazon ML은 Amazon ML에서 해당 객체 생성을 완료한 시기와 같은 객체에 대한 정보도 제공합니다. 자세한 내용은 [객체 나열](listing-objects.md) 단원을 참조하세요.

# 시스템 제한
<a name="system-limits"></a>

 강력하고 안정적인 서비스를 제공하기 위해 Amazon ML은 시스템에 보내는 요청에 특정 제한을 적용합니다. 대부분의 ML 문제는 이러한 제약 조건에 쉽게 들어 맞습니다. 하지만 이러한 제한으로 인해 ML 사용이 제한되는 경우 [고객 서비스](https://aws.amazon.com/contact-us/)에 문의하여 한도 상향을 요청할 수 있습니다. 예를 들어, 동시에 실행할 수 있는 작업 수가 5개로 제한될 수 있습니다. 이 제한 때문에 리소스를 기다리는 작업이 대기열에 있는 경우가 많다면 계정에 대한 한도를 높이는 것이 합리적일 수 있습니다.

 다음 표에는 Amazon ML의 기본 계정별 한도가 나와 있습니다. 고객 서비스에서 이러한 제한을 모두 높일 수 있는 것은 아닙니다.


| **제한 유형** | **시스템 제한** | 
| --- | --- | 
| 각 관측치의 크기 | 100KB | 
| 학습 데이터 크기 \$1 | 100GB | 
| 배치 예측 입력 크기 | 1TB | 
| 배치 예측 입력 크기(레코드 수) | 1억 | 
| 데이터 파일에 있는 변수의 수(스키마) | 1,000 | 
| 레시피 복잡성(처리되는 출력 변수의 수) | 10,000 | 
| 각 실시간 예측 엔드포인트의 TPS | 200 | 
| 모든 실시간 예측 엔드포인트의 총 RAM | 10,000 | 
| 모든 실시간 예측 엔드포인트의 총 TPS | 10GB | 
| 동시 작업 수 | 25 | 
| 특정 작업의 최장 실행 시간 | 7일 | 
| 멀티클래스 ML 모델의 클래스 수 | 100 | 
| ML 모델 크기 | 최소 1MB, 최대 2GB | 
| 객체당 태그 수 | 50 | 
+  작업이 시기적절하게 완료될 수 있도록 데이터 파일의 크기가 제한됩니다. 7일 이상 실행 중인 작업은 자동으로 종료되어 실패 상태가 됩니다.

# 모든 객체의 이름 및 ID
<a name="names-and-ids-for-all-objects"></a>

 Amazon ML의 모든 객체에는 식별자 또는 ID가 있어야 합니다. Amazon ML 콘솔은 ID 값을 자동으로 생성하지만, API를 사용하는 경우 직접 생성해야 합니다. 각 ID는 계정에서 동일한 유형의 모든 Amazon ML 객체 간에 고유해야 합니다. 즉, 동일한 ID로 평가를 두 번 수행할 수 없습니다. 권장되지는 않지만 동일한 ID를 가진 평가와 데이터 소스가 있을 수 있습니다.

 무작위로 생성된 객체 식별자를 사용하고, 객체 유형을 식별하기 위해 접두어에 짧은 문자열을 접두사로 붙이는 것이 좋습니다. 예를 들어 Amazon ML 콘솔이 데이터 소스를 생성할 때 해당 데이터 소스에 "ds-zScWIuWiOxF"와 같은 임의의 고유 ID를 할당합니다. 이 ID는 단일 사용자의 충돌을 피할 수 있을 만큼 충분히 무작위적이며 간결하고 가독성도 뛰어납니다. "ds-" 접두사는 편의성과 명확성을 위한 것이지만 필수는 아닙니다. ID 문자열에 무엇을 사용해야 할지 잘 모르겠으면 모든 최신 프로그래밍 환경에서 쉽게 사용할 수 있는 16진수 UUID 값(예: 28b1e915-57e5-4e6c-a7bd-6fb4e729cb23)을 사용하는 것이 좋습니다.

 ID 문자열은 ASCII 문자, 숫자, 하이픈 및 밑줄을 포함할 수 있으며 최대 64자까지 가능합니다. 메타데이터를 ID 문자열로 인코딩하는 것이 가능하고 편리할 수도 있습니다. 하지만 객체를 만든 후에는 해당 ID를 변경할 수 없으므로 사용하지 않는 것이 좋습니다.

 객체 이름을 사용하면 사용자에게 친숙한 메타데이터를 각 객체와 쉽게 연결할 수 있습니다. 객체를 만든 후에 이름을 업데이트할 수 있습니다. 이렇게 하면 객체 이름이 ML 워크플로의 일부 측면을 반영할 수 있습니다. 예를 들어 처음에는 ML 모델 이름을 "실험 \$13"으로 지정했다가 나중에 모델 이름을 "최종 생산 모델"로 바꿀 수 있습니다. 이름은 최대 1,024자까지 원하는 문자열이 될 수 있습니다.

# 객체 수명
<a name="object-lifetimes"></a>

 Amazon ML로 생성한 모든 데이터 소스, ML 모델, 평가 또는 배치 예측 객체는 생성 후 최소 2년 동안 사용할 수 있습니다. Amazon ML은 2년 이상 액세스하지 않았거나 사용하지 않은 객체를 자동으로 제거할 수 있습니다.