

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Peran layanan untuk instans EC2 klaster (profil instans EC2)
<a name="emr-iam-role-for-ec2"></a>

Peran layanan untuk instans EC2 klaster (juga disebut profil instans EC2 untuk Amazon EMR) adalah tipe khusus dari peran layanan yang ditugaskan untuk setiap instans EC2 di sebuah klaster Amazon EMR ketika instans meluncur. Proses aplikasi yang berjalan di atas ekosistem Hadoop menganggap peran ini untuk izin untuk berinteraksi dengan layanan AWS lain.

Untuk informasi lebih lanjut tentang peran layanan untuk instans EC2, lihat [Menggunakan IAM role untuk memberikan izin pada aplikasi yang berjalan di instans Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) di *Panduan Pengguna IAM*.

**penting**  
Peran layanan default untuk instans EC2 klaster dan kebijakan terkelola AWS default terkait, `AmazonElasticMapReduceforEC2Role` berada di jalur menuju penghentian, tanpa kebijakan terkelola pengganti yang disediakan. AWS Anda harus membuat dan menentukan profil instans untuk mengganti peran dan kebijakan default yang tidak lagi digunakan.

## Peran default dan kebijakan terkelola
<a name="emr-ec2-role-default"></a>
+ Nama peran default adalah `EMR_EC2_DefaultRole`.
+ Kebijakan terkelola `EMR_EC2_DefaultRole` default`AmazonElasticMapReduceforEC2Role`,, mendekati akhir dukungan. Alih-alih menggunakan kebijakan terkelola default untuk profil instans EC2, terapkan kebijakan berbasis sumber daya ke bucket S3 dan sumber daya lain yang dibutuhkan Amazon EMR, atau gunakan kebijakan yang dikelola pelanggan Anda sendiri dengan peran IAM sebagai profil instans. Untuk informasi selengkapnya, lihat [Membuat peran layanan untuk instans EC2 klaster dengan izin hak istimewa paling sedikit](#emr-ec2-role-least-privilege).

Berikut ini menunjukkan isi dari versi 3 dari `AmazonElasticMapReduceforEC2Role`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Action": [
        "cloudwatch:*",
        "dynamodb:*",
        "ec2:Describe*",
        "elasticmapreduce:Describe*",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListSteps",
        "kinesis:CreateStream",
        "kinesis:DeleteStream",
        "kinesis:DescribeStream",
        "kinesis:GetRecords",
        "kinesis:GetShardIterator",
        "kinesis:MergeShards",
        "kinesis:PutRecord",
        "kinesis:SplitShard",
        "rds:Describe*",
        "s3:*",
        "sdb:*",
        "sns:*",
        "sqs:*",
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Sid": "AllowCLOUDWATCH"
    }
  ]
}
```

------

Peran layanan Anda harus menggunakan kebijakan kepercayaan berikut.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSTSAssumerole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole"
    }
  ]
}
```

------

## Membuat peran layanan untuk instans EC2 klaster dengan izin hak istimewa paling sedikit
<a name="emr-ec2-role-least-privilege"></a>

Sebagai praktik terbaik, kami sangat menyarankan agar Anda membuat peran layanan untuk instans EC2 klaster dan kebijakan izin yang memiliki izin minimum untuk AWS layanan lain yang diperlukan oleh aplikasi Anda.

Kebijakan terkelola default, `AmazonElasticMapReduceforEC2Role`, menyediakan izin yang membuatnya mudah untuk meluncurkan klaster awal. Namun, `AmazonElasticMapReduceforEC2Role` berada di jalur menuju penghentian dan Amazon EMR tidak akan memberikan kebijakan default AWS terkelola pengganti untuk peran yang tidak digunakan lagi. Untuk meluncurkan klaster awal, Anda perlu menyediakan pelanggan terkelola berbasis sumber daya atau kebijakan berbasis ID.

Pernyataan kebijakan berikut memberikan contoh izin yang diperlukan untuk fitur yang berbeda dari Amazon EMR. Kami merekomendasikan Anda menggunakan izin ini untuk membuat kebijakan izin yang membatasi akses ke fitur dan sumber daya yang hanya diperlukan klaster Anda. Semua contoh pernyataan kebijakan menggunakan *us-west-2* Region dan ID AWS *123456789012* akun fiksi. Ganti ini agar sesuai untuk klaster Anda.

Untuk informasi selengkapnya tentang pembuatan dan penentuan peran kustom, lihat [Sesuaikan peran IAM dengan Amazon EMR](emr-iam-roles-custom.md).

**catatan**  
Jika Anda membuat peran EMR kustom untuk EC2, ikuti alur kerja basic, yang secara otomatis membuat profil instans dengan nama yang sama. Amazon EC2 mengizinkan Anda untuk membuat profil instans dan peran dengan nama yang berbeda, tetapi Amazon EMR tidak support konfigurasi ini, dan itu menghasilkan kesalahan "profil instans tidak valid" ketika Anda membuat klaster. 

### Membaca dan menulis data ke Amazon S3 menggunakan EMRFS
<a name="emr-ec2-role-EMRFS"></a>

Ketika aplikasi yang berjalan di data referensi klaster Amazon EMR menggunakan format `s3://mydata`, Amazon EMR menggunakan profil instans EC2 untuk membuat permintaan. Klaster biasanya membaca dan menulis data ke Amazon S3 dengan cara ini, dan Amazon EMR menggunakan izin yang terlampir pada peran layanan untuk instans EC2 klaster secara default. Untuk informasi selengkapnya, lihat [Konfigurasi IAM role untuk permintaan EMRFS ke Amazon S3](emr-emrfs-iam-roles.md).

Karena IAM role untuk EMRFS akan mundur ke izin yang terlampir pada peran layanan untuk instans EC2 klaster, sebagai praktik terbaik, kami rekomendasikan Anda menggunakan IAM role untuk EMRFS, dan membatasi izin EMRFS dan Amazon S3 yang terlampir pada peran layanan untuk instans EC2 klaster.

Sampel pernyataan di bawah ini menunjukkan izin yang diperlukan EMRFS untuk membuat permintaan ke Amazon S3.
+ *my-data-bucket-in-s3-for-emrfs-reads-and-writes*menentukan bucket di Amazon S3 tempat cluster membaca dan menulis data dan semua sub-folder yang digunakan. */\$1* Menambahkan hanya bucket dan folder yang dibutuhkan aplikasi Anda.
+ Pernyataan kebijakan yang mengizinkan `dynamodb` tindakan hanya diperlukan jika tampilan konsisten EMRFS diaktifkan. *EmrFSMetadata*menentukan folder default untuk tampilan konsisten EMRFS.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:CreateBucket",
        "s3:DeleteObject",
        "s3:GetBucketVersioning",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions",
        "s3:ListMultipartUploadParts",
        "s3:PutBucketVersioning",
        "s3:PutObject",
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes",
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes/*"
      ],
      "Sid": "AllowS3Abortmultipartupload"
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:CreateTable",
        "dynamodb:BatchGetItem",
        "dynamodb:BatchWriteItem",
        "dynamodb:PutItem",
        "dynamodb:DescribeTable",
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:Scan",
        "dynamodb:Query",
        "dynamodb:UpdateItem",
        "dynamodb:DeleteTable",
        "dynamodb:UpdateTable"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:123456789012:table/EmrFSMetadata"
      ],
      "Sid": "AllowDYNAMODBCreatetable"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData",
        "dynamodb:ListTables",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHPutmetricdata"
    },
    {
      "Effect": "Allow",
      "Action": [
        "sqs:GetQueueUrl",
        "sqs:ReceiveMessage",
        "sqs:DeleteQueue",
        "sqs:SendMessage",
        "sqs:CreateQueue"
      ],
      "Resource": [
        "arn:aws:sqs:*:123456789012:EMRFS-Inconsistency-*"
      ],
      "Sid": "AllowSQSGetqueueurl"
    }
  ]
}
```

------

### Mengarsipkan log file ke Amazon S3
<a name="emr-ec2-role-s3-logs"></a>

Pernyataan kebijakan berikut mengizinkan klaster Amazon EMR untuk log file arsip ke lokasi Amazon S3 yang ditentukan. Dalam contoh di bawah ini, ketika cluster *s3://MyLoggingBucket/MyEMRClusterLogs* dibuat, ditentukan menggunakan **lokasi folder Log S3** di konsol, menggunakan `--log-uri` opsi dari AWS CLI, atau menggunakan `LogUri` parameter dalam `RunJobFlow` perintah. Untuk informasi selengkapnya, lihat [Arsipkan berkas log ke Amazon S3](emr-plan-debugging.md#emr-plan-debugging-logs-archive).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::MyLoggingBucket/MyEMRClusterLogs/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

### Menggunakan Katalog Data AWS Glue
<a name="emr-ec2-role-glue"></a>

Pernyataan kebijakan berikut memungkinkan tindakan yang diperlukan jika Anda menggunakan Katalog Data AWS Glue sebagai metastore untuk aplikasi. *Untuk informasi selengkapnya, lihat [Menggunakan Katalog Data AWS Glue sebagai metastore untuk Spark SQL](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html), Menggunakan [Katalog Data AWS Glue sebagai metastore untuk Hive](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html), dan Menggunakan [Presto dengan AWS Katalog Data Glue di](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html) Panduan Rilis Amazon EMR.*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowGLUECreatedatabase"
    }
  ]
}
```

------