View a markdown version of this page

Peran layanan untuk instans EC2 klaster (profil instans EC2) - Amazon EMR

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)

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 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

  • Nama peran default adalah EMR_EC2_DefaultRole.

  • Kebijakan terkelola EMR_EC2_DefaultRole defaultAmazonElasticMapReduceforEC2Role,, 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.

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

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.

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

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.

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-writesmenentukan bucket di Amazon S3 tempat cluster membaca dan menulis data dan semua sub-folder yang digunakan. /* Menambahkan hanya bucket dan folder yang dibutuhkan aplikasi Anda.

  • Pernyataan kebijakan yang mengizinkan dynamodb tindakan hanya diperlukan jika tampilan konsisten EMRFS diaktifkan. EmrFSMetadatamenentukan 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

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.

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

Menggunakan Katalog Data AWS Glue

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, Menggunakan Katalog Data AWS Glue sebagai metastore untuk Hive, dan Menggunakan Presto dengan AWS Katalog Data Glue di 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" } ] }