

# 列統計を生成するための前提条件
<a name="column-stats-prereqs"></a>

列統計を生成または更新するために、統計生成タスクはユーザーに代わって AWS Identity and Access Management (IAM) ロールを引き受けます。ロールに付与された許可に基づいて、列統計生成タスクは Amazon S3 データストアからデータを読み取ることができます。

AWS Glue では、列統計生成タスクを設定するときに、`AWSGlueServiceRole` AWS 管理ポリシーと指定されたデータソースに必要なインラインポリシーを含むロールを作成できます。

列統計の生成に既存のロールを指定する場合は、そのロールに `AWSGlueServiceRole` ポリシーまたは同等のポリシー (またはこのポリシーのスコープダウンバージョン)、および必要なインラインポリシーが含まれてることを確認します。次のステップに従って、新しい IAM ロールを作成します。

**注記**  
 Lake Formation によって管理されるテーブルの統計を生成するには、統計の生成に使用される IAM ロールに完全なテーブルアクセスが必要です。　 

AWS Glue では、列統計生成タスクを設定するときに、`AWSGlueServiceRole` AWS 管理ポリシーと指定されたデータソースに必要なインラインポリシーを含むロールを作成できます。また、ロールを作成して、以下のポリシーにリストされているアクセス許可をアタッチし、そのロールを列統計生成タスクに追加することもできます。

**列統計を生成するための IAM ロールを作成するには**

1. IAM ロールを作成するには、「[AWS Glue の IAM ロールを作成する](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html)」を参照してください。

1. 既存のロールを更新するには、IAM コンソールで、列統計の生成プロセスで使用されている IAM ロールにアクセスします。

1. **[許可を追加]** セクションで、**[ポリシーをアタッチ]** を選択します。新しく開いたブラウザウィンドウで、`AWSGlueServiceRole` AWS マネージドポリシーを選択します。

1. Amazon S3 のデータの場所からデータを読み取るための許可も含める必要があります。

   **[Add permissions]** (アクセス許可の追加) セクションで、**[Create policy]** (ポリシーの作成) を選択します。新しく開いたブラウザウィンドウで、ロールで使用する新しいポリシーを作成します。

1. **[ポリシーを作成]** ページで、**[JSON]** タブを選択します。次の `JSON` コードをポリシーエディタフィールドにコピーします。
**注記**  
次のポリシーでは、アカウント ID を有効な AWS アカウント に置き換え、`region` をテーブルのリージョンに置き換え、`bucket-name` を Amazon S3 バケット名に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
               	"arn:aws:s3:::amzn-s3-demo-bucket/*",
   							"arn:aws:s3:::amzn-s3-demo-bucket"
               ]
           }
        ]
   }
   ```

------

1. (オプション) Lake Formation の許可を使用してデータに対するアクセスを提供している場合、IAM ロールには `lakeformation:GetDataAccess` 許可が必要です。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "LakeFormationDataAccess",
         "Effect": "Allow",
         "Action": "lakeformation:GetDataAccess",
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

    Amazon S3 のデータの場所が Lake Formation に登録されており、テーブルに対する `IAM_ALLOWED_PRINCIPALS` グループ許可が、列統計生成タスクによって引き受けられる IAM ロールに付与されていない場合、そのロールには、テーブルに対する Lake Formation `ALTER` および `DESCRIBE` 許可が必要です。Amazon S3 バケットの登録に使用されるロールには、テーブルに対する Lake Formation `INSERT` および `DELETE` 許可が必要です。

   Amazon S3 のデータの場所が Lake Formation に登録されておらず、テーブルに対する `IAM_ALLOWED_PRINCIPALS` グループ許可が IAM ロールに付与されていない場合、そのロールには、テーブルに対する Lake Formation `ALTER`、`DESCRIBE`、`INSERT`、および `DELETE` 許可が必要です。

1. カタログレベルの `Automatic statistics generation` オプションを有効にしている場合、IAM ロールには、デフォルトのデータカタログに対する `glue:UpdateCatalog` アクセス許可または Lake Formation `ALTER CATALOG` アクセス許可が必要になります。カタログのプロパティは、`GetCatalog` オペレーションを使用して確認できます。

1. (オプション) 暗号化された Amazon CloudWatch Logs を書き込む列統計生成タスクには、キーポリシーで次の許可が必要です。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CWLogsKmsPermissions",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:AssociateKmsKey"
         ],
         "Resource": [
           "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue:*"
         ]
       },
       {
         "Sid": "KmsPermissions",
         "Effect": "Allow",
         "Action": [
           "kms:GenerateDataKey",
           "kms:Decrypt",
           "kms:Encrypt"
         ],
         "Resource": [
           "arn:aws:kms:us-east-1:111122223333:key/arn of key used for ETL cloudwatch encryption"
         ],
         "Condition": {
           "StringEquals": {
             "kms:ViaService": [
               "glue.us-east-1.amazonaws.com"
             ]
           }
         }
       }
     ]
   }
   ```

------

1. 列統計の実行に使用するロールには、そのロールに対する `iam:PassRole` のアクセス許可が必要です。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "iam:PassRole"
         ],
         "Resource": [
           "arn:aws:iam::111122223333:role/columnstats-role-name"
         ]
       }
     ]
   }
   ```

------

1. 列統計を生成するための IAM ロールを作成する場合、そのロールには、サービスがそのロールを引き受けることを可能にする次の信頼ポリシーも必要です。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "TrustPolicy",
         "Effect": "Allow",
         "Principal": {
           "Service": "glue.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------