

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

# Distributed Map 상태를 사용하기 위한 IAM 정책
<a name="iam-policies-eg-dist-map"></a>

Step Functions 콘솔을 사용하여 워크플로를 만들면 Step Functions에서 워크플로 정의의 리소스를 기반으로 IAM 정책을 자동으로 생성할 수 있습니다. 생성된 정책에는 상태 시스템 역할이 *Distributed Map 상태에* 대한 `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API 작업을 호출하고 Amazon S3 버킷 및 객체, Lambda 함수와 같은 AWS 리소스에 액세스하는 데 필요한 최소 권한이 포함됩니다.

IAM 정책에 필요한 권한만 포함시키는 것이 좋습니다. 예를 들어 워크플로에 분산 모드의 `Map` 상태가 포함된 경우 정책 범위를 데이터가 포함된 특정 Amazon S3 버킷과 폴더로 좁힙니다.

**중요**  
*Distributed Map 상태* 입력에 있는 기존 키-값 페어에 대한 [참조 경로](amazon-states-language-paths.md#amazon-states-language-reference-paths)를 사용하여 Amazon S3 버킷과 객체 또는 접두사를 지정하는 경우 워크플로에 대한 IAM 정책을 업데이트해야 합니다. 정책 범위를 런타임 시 경로에서 확인하는 버킷과 객체 이름으로 좁히세요.

## Distributed Map 상태를 실행하기 위한 IAM 정책의 예제
<a name="iam-policy-run-dist-map"></a>

워크플로에 *Distributed Map 상태*가 포함된 경우 Step Functions에는 상태 머신 역할에서 *Distributed Map 상태*의 `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API 작업을 호출할 수 있는 적절한 권한이 있어야 합니다.

다음 IAM 정책 예제에서는 *Distributed Map 상태*를 실행하는 데 필요한 최소 권한을 상태 머신 역할에 부여합니다.

**참고**  
`stateMachineName`을 *Distributed Map 상태*를 사용하는 상태 머신의 이름으로 바꿔야 합니다. 예를 들어 `arn:aws:states:region:account-id:stateMachine:mystateMachine`입니다.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:StartExecution"
      ],
      "Resource": [
        "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeExecution"
      ],
      "Resource": "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*"
    }
  ]
}
```

## Distributed Map을 redriving하기 위한 IAM 정책 예제
<a name="iam-policy-redrive-dist-map"></a>

[상위 워크플로](state-map-distributed.md#dist-map-orchestrate-parallel-workloads-key-terms)를 [redriving](redrive-executions.md)하면 맵 실행에서 실패한 하위 워크플로 실행을 다시 시작할 수 있습니다. redriven 상위 워크플로에서 Distributed Map을 비롯한 실패한 모든 상태를 redrives합니다. 상위 워크플로에서 `[RedriveExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html)` API 작업을 간접적으로 호출하는 데 필요한 최소 권한이 실행 역할에 있는지 확인합니다.

다음 IAM 정책 예제에서는 *Distributed Map 상태*를 redriving하는 데 필요한 최소 권한을 상태 머신에 부여합니다.

**참고**  
`stateMachineName`을 *Distributed Map 상태*를 사용하는 상태 머신의 이름으로 바꿔야 합니다. 예를 들어 `arn:aws:states:region:account-id:stateMachine:mystateMachine`입니다.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:RedriveExecution"
      ],
      "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachineName/myMapRunLabel:*"
    }
  ]
}
```

## Amazon S3 데이터세트에서 데이터 읽기에 대한 IAM 정책 예제
<a name="iam-policy-eg-item-reader"></a>

다음 예제에서는 [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) 및 [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) API 작업을 사용하여 Amazon S3 데이터세트에 액세스하는 데 필요한 최소 권한을 부여하는 기술을 보여줍니다.

**Example Amazon S3 객체를 데이터세트로 사용하는 조건**  
다음 조건은 Amazon S3 버킷의 `processImages` 폴더에 있는 객체에 액세스할 수 있는 최소 권한을 부여합니다.  

```
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ],
"Condition": {
   "StringLike": { 
      "s3:prefix": [ "processImages" ]
   }
}
```

**Example CSV 파일을 데이터세트로 사용**  
다음 예제에서는 `ratings.csv`라는 CSV 파일에 액세스하는 데 필요한 작업을 보여줍니다.  

```
"Action": [ "s3:GetObject" ],
"Resource": [
   "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv"
   ]
```

**Example Amazon S3 Inventory를 데이터세트로 사용**  
다음은 Amazon S3 Inventory 매니페스트 및 데이터 파일에 대한 리소스의 예입니다.  

```
"Resource": [
   "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json",
   "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*"
   ]
```

**Example ListObjectsV2를 사용하여 폴더 접두사로 제한**  
[ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)를 사용하는 경우 2개의 정책이 생성됩니다. 하나는 버킷의 콘텐츠를 **나열**(`ListBucket`)할 수 있도록 허용하고 다른 하나는 버킷의 **객체를 검색**(`GetObject`)할 수 있도록 허용하는 정책입니다.  
다음은 예제 작업, 리소스 및 조건을 보여줍니다.  

```
"Action": [ "s3:ListBucket" ],
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ],
"Condition": {
   "StringLike": {
      "s3:prefix": [ "/path/to/your/json/" ]
   }
}
```

```
"Action": [ "s3:GetObject" ],
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]
```
`GetObject`는 범위가 지정되지 않으며 객체에 와일드카드(`*`)를 사용합니다.

## Amazon S3 버킷에 데이터를 쓰기 위한 IAM 정책 예제
<a name="iam-policy-eg-result-writer"></a>

다음 IAM 정책 예제에서는 `[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)` API 작업을 사용하여 하위 워크플로 실행 결과를 Amazon S3 버킷의 *csvJobs* 폴더에 쓰는 데 필요한 최소 권한을 부여합니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*"
            ]
        }
    ]
}
```

### AWS KMS key 암호화된 Amazon S3 버킷에 대한 IAM 권한
<a name="multiupload-dmap-result-policy"></a>

*Distributed Map 상태*는 멀티파트 업로드를 사용하여 하위 워크플로 실행 결과를 Amazon S3 버킷에 씁니다. AWS Key Management Service (AWS KMS) 키를 사용하여 버킷을 암호화하는 경우 IAM 정책에 키에서`kms:Decrypt`, `kms:Encrypt` 및 `kms:GenerateDataKey` 작업을 수행할 수 있는 권한도 포함해야 합니다. 이러한 권한이 필요한 이유는 Amazon S3이 멀티파트 업로드를 완료하기 전에 암호화된 파일 부분에서 데이터를 암호 해독하고 읽어야 하기 때문입니다.

다음 IAM 정책 예제에서는 Amazon S3 버킷을 암호화하는 데 사용되는 키에 대한 `kms:Decrypt`, `kms:Encrypt` 및 `kms:GenerateDataKey` 작업에 권한을 부여합니다.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Decrypt",
      "kms:Encrypt",
      "kms:GenerateDataKey"
    ],
    "Resource": [
      "arn:aws:kms:us-east-1:123456789012:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    ]
  }
}
```

자세한 내용은 *AWS 지식 센터*의 [AWS KMS key를 사용한 암호화를 통해 Amazon S3에 대용량 파일 업로드](https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-file-encryption-kms-key/)를 참조하십시오.

IAM 사용자 또는 역할이 AWS 계정 와 동일한에 있는 KMS key경우 키 정책에 대한 이러한 권한이 있어야 합니다. IAM 사용자 또는 역할이 KMS key와 다른 계정에 속한 경우 키 정책과 IAM 사용자 또는 역할 모두에 대한 권한이 있어야 합니다.