Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Peran layanan untuk EC2 instance cluster (profil EC2 instance)
Peran layanan untuk EC2 instance klaster (juga disebut profil EC2 instans untuk AmazonEMR) adalah jenis peran layanan khusus yang ditetapkan ke setiap EC2 instance di EMR klaster Amazon saat instance diluncurkan. Proses aplikasi yang berjalan di atas ekosistem Hadoop menganggap peran ini untuk izin untuk berinteraksi dengan layanan AWS lain.
Untuk informasi selengkapnya tentang peran layanan untuk EC2 instance, lihat Menggunakan IAM peran untuk memberikan izin ke aplikasi yang berjalan di EC2 instans Amazon di Panduan Pengguna. IAM
penting
Peran layanan default untuk EC2 instance klaster dan kebijakan terkelola AWS default terkait, AmazonElasticMapReduceforEC2Role
berada di jalur menuju penghentian, tanpa kebijakan terkelola pengganti AWS yang disediakan. 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 EC2 instans, terapkan kebijakan berbasis sumber daya ke bucket S3 dan sumber daya lain yang EMR dibutuhkan Amazon, atau gunakan kebijakan yang dikelola pelanggan Anda sendiri dengan peran sebagai profil instans. IAM Untuk informasi selengkapnya, lihat Membuat peran layanan untuk EC2 instance klaster dengan izin hak istimewa paling sedikit.
Berikut ini menunjukkan isi dari versi 3 dari AmazonElasticMapReduceforEC2Role
.
{ "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" ] } ] }
Peran layanan Anda harus menggunakan kebijakan kepercayaan berikut.
{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Membuat peran layanan untuk EC2 instance klaster dengan izin hak istimewa paling sedikit
Sebagai praktik terbaik, kami sangat menyarankan agar Anda membuat peran layanan untuk EC2 instance 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 tidak EMR 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 berbagai fitur AmazonEMR. 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
Wilayah dan ID AWS akun fiksi 123456789012
. Ganti ini sesuai untuk cluster Anda.
Untuk informasi selengkapnya tentang pembuatan dan penentuan peran kustom, lihat Sesuaikan IAM peran.
catatan
Jika Anda membuat EMR peran khusus untukEC2, ikuti alur kerja dasar, yang secara otomatis membuat profil instance dengan nama yang sama. Amazon EC2 memungkinkan Anda membuat profil dan peran instance dengan nama yang berbeda, tetapi Amazon EMR tidak mendukung konfigurasi ini, dan menghasilkan kesalahan “profil instans tidak valid” saat Anda membuat klaster.
Membaca dan menulis data ke Amazon S3 menggunakan EMRFS
Saat aplikasi yang berjalan di EMR klaster Amazon mereferensikan data EMR menggunakan s3://
format, Amazon menggunakan profil EC2 instance untuk membuat permintaan. Cluster biasanya membaca dan menulis data ke Amazon S3 dengan cara ini, dan EMR Amazon menggunakan izin yang dilampirkan ke peran layanan untuk instance EC2 cluster secara default. Untuk informasi selengkapnya, lihat Konfigurasikan IAM peran untuk EMRFS permintaan ke Amazon S3.mydata
Karena IAM peran for EMRFS akan kembali ke izin yang dilampirkan ke peran layanan untuk EC2 instance klaster, sebagai praktik terbaik, sebaiknya gunakan IAM peran untukEMRFS, dan membatasi izin Amazon S3 dan Amazon S3 yang dilampirkan ke peran layanan untuk instance klaster. EMRFS EC2
Pernyataan contoh di bawah ini menunjukkan izin yang EMRFS diperlukan untuk membuat permintaan ke Amazon S3.
-
my-data-bucket-in-s3- -menulis for-emrfs-reads-and
menentukan bucket di Amazon S3 tempat cluster membaca dan menulis data dan semua sub-folder menggunakan/*
. Tambahkan hanya bucket dan folder yang dibutuhkan aplikasi Anda. -
Pernyataan kebijakan yang mengizinkan
dynamodb
tindakan hanya diperlukan jika tampilan EMRFS konsisten diaktifkan.E mrFSMetadata
menentukan folder default untuk tampilan yang EMRFS konsisten.
{ "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/*
" ] }, { "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:us-west-2
:123456789012
:table/EmrFSMetadata
" }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "dynamodb:ListTables", "s3:ListBucket" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sqs:GetQueueUrl", "sqs:ReceiveMessage", "sqs:DeleteQueue", "sqs:SendMessage", "sqs:CreateQueue" ], "Resource": "arn:aws:sqs:us-west-2
:123456789012
:EMRFS-Inconsistency-*" } ] }
Mengarsipkan log file ke Amazon S3
Pernyataan kebijakan berikut memungkinkan EMR klaster Amazon mengarsipkan file log ke lokasi Amazon S3 yang ditentukan. Pada contoh di bawah ini, ketika cluster dibuat, s3:///MyLoggingBucketM Log yEMRCluster
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.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
MyLoggingBucket/MyEMRClusterLogs
/*" } ] }
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 Katalog AWS Data Glue di Panduan Rilis Amazon. EMR
{ "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": "*", } ] }