

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 分散マップ状態を使用するための IAM ポリシー
<a name="iam-policies-eg-dist-map"></a>

Step Functions コンソールでワークフローを作成すると、Step Functions はワークフロー定義内のリソースに基づいて IAM ポリシーを自動的に生成できます。生成されたポリシーには、ステートマシンロールが*分散マップ状態の* `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API アクションを呼び出し、Amazon S3 バケットやオブジェクト、Lambda 関数などの AWS リソースにアクセスするために必要な最小限の権限が含まれます。

IAM ポリシーには必要最小限のアクセス許可のみを含めることをお勧めします。例えば、ワークフローに分散モードの `Map` ステートが含まれている場合、ポリシーの範囲を対象データが含まれる特定の Amazon S3 バケットおよびフォルダに絞り込みます。

**重要**  
*分散マップ状態*の入力で、既存のキーと値のペアへの[参照パス](amazon-states-language-paths.md#amazon-states-language-reference-paths)とともに、Amazon S3 バケットやオブジェクト、またはプレフィックスを指定する場合は、ワークフローの IAM ポリシーを必ず更新してください。ポリシーの範囲は、ランタイムでパスから解釈されるバケット名とオブジェクト名に限定します。

## 分散マップ状態を実行するための IAM ポリシーの例
<a name="iam-policy-run-dist-map"></a>

ワークフローに*分散マップ状態*を含める場合、Step Functions には、ステートマシンのロールで*分散マップ状態*の `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API アクションを呼び出すための適切な許可が必要です。

次の IAM ポリシー例では、ステートマシンのロールで*分散マップ状態*を実行するために必要な最小特権を付与しています。

**注記**  
必ず `{{stateMachineName}}` を、*分散マップ状態*を使用しているステートマシン名に置き換えてください。例えば、`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}}:*"
    }
  ]
}
```

## 分散マップの IAM redriving ポリシーの例
<a name="iam-policy-redrive-dist-map"></a>

失敗した子ワークフローは、[親ワークフロー](state-map-distributed.md#dist-map-orchestrate-parallel-workloads-key-terms)のマップ実行で [redriving](redrive-executions.md) できます。redriven された親ワークフローは、分散マップを含むすべての失敗状態を redrives します。実行ロールには、親ワークフローで `[RedriveExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html)` API アクションを呼び出すために必要な最小特権があることを確認してください。

次の IAM ポリシー例では、ステートマシンのロールで*分散マップ状態*を redriving (再処理) するために必要な最小特権を付与しています。

**注記**  
必ず `{{stateMachineName}}` を、*分散マップ状態*を使用しているステートマシン名に置き換えてください。例えば、`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 インベントリをデータセットとして使用する**  
次に示しているのは、Amazon S3 インベントリマニフェストとデータファイルのリソースの例です。  

```
"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 つのポリシーが生成されます。1 つはバケット (`ListBucket`) の内容を**一覧表示**するための、もう 1 つはバケット (`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>

*分散マップ状態*では、マルチパートアップロードを使用して Amazon S3 バケットに子ワークフローの実行結果を書き込みます。バケットが AWS Key Management Service (AWS KMS) キーを使用して暗号化されている場合は、キーに対して `kms:Decrypt`、`kms:Encrypt`、`kms:GenerateDataKey` アクションを実行する許可も、IAM ポリシーに含める必要があります。マルチパートアップロードを完了する前に、暗号化されたファイル部分からデータを復号して読み取る必要があるため、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 ユーザーまたはロールへのアクセス許可が両方とも必要です。