本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EMR Serverless 入門
本教學課程可協助您在部署範例 Spark 或 Hive 工作負載時開始使用 EMR Serverless。您將建立、執行和偵錯自己的應用程式。我們在本教學的大部分部分顯示預設選項。
啟動 EMR Serverless 應用程式之前,請完成下列任務。
授予使用 EMR Serverless 的許可
若要使用 EMR Serverless,您需要具有連接政策的使用者或IAM角色來授予 EMR Serverless 的許可。若要建立使用者並將適當的政策連接到該使用者,請遵循 中的指示授予許可。
為無EMR伺服器準備儲存
在本教學課程中,您將使用 S3 儲存貯體來存放使用 EMR Serverless 應用程式執行之範例 Spark 或 Hive 工作負載的輸出檔案和日誌。若要建立儲存貯體,請遵循 Amazon Simple Storage Service 主控台使用者指南中建立儲存貯體的指示。以新建立的儲存貯amzn-s3-demo-bucket
體名稱取代 的任何進一步參考。
建立 EMR Studio 以執行互動式工作負載
如果您想要使用 EMR Serverless 透過 EMR Studio 中託管的筆記本執行互動式查詢,您需要指定 S3 儲存貯體和 EMR Serverless 的最低服務角色,才能建立工作區。如需設定步驟,請參閱《Amazon EMR管理指南》中的設定 EMR Studio。如需互動式工作負載的詳細資訊,請參閱透過 EMR Studio 使用 EMR Serverless 執行互動式工作負載。
建立任務執行期角色
EMR 在 Serverless 中執行的任務會使用執行期角色,在執行期提供特定 AWS 服務 和資源的精細許可。在本教學課程中,公有 S3 儲存貯體會託管資料和指令碼。儲存貯amzn-s3-demo-bucket
體存放輸出。
若要設定任務執行期角色,請先使用信任政策建立執行期角色,以便 EMR Serverless 可以使用新角色。接著,將所需的 S3 存取政策連接到該角色。下列步驟會引導您完成此程序。
- Console
-
-
在 導覽至 IAM主控台https://console.aws.amazon.com/iam/。
-
在左側導覽窗格中,選擇 Roles (角色)。
-
選擇建立角色。
-
針對角色類型,選擇自訂信任政策並貼上下列信任政策。這可讓提交至 Amazon EMR Serverless 應用程式的任務 AWS 服務 代表您存取其他 。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "emr-serverless.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
選擇下一步以導覽至新增許可頁面,然後選擇建立政策。
-
建立新標籤會開啟建立政策頁面。貼上JSON以下政策。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadAccessForEMRSamples",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::*.elasticmapreduce",
"arn:aws:s3:::*.elasticmapreduce/*"
]
},
{
"Sid": "FullAccessToOutputBucket",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
",
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
]
},
{
"Sid": "GlueCreateAndReadDataCatalog",
"Effect": "Allow",
"Action": [
"glue:GetDatabase",
"glue:CreateDatabase",
"glue:GetDataBases",
"glue:CreateTable",
"glue:GetTable",
"glue:UpdateTable",
"glue:DeleteTable",
"glue:GetTables",
"glue:GetPartition",
"glue:GetPartitions",
"glue:CreatePartition",
"glue:BatchCreatePartition",
"glue:GetUserDefinedFunctions"
],
"Resource": ["*"]
}
]
}
-
在檢閱政策頁面上,輸入政策的名稱,例如 EMRServerlessS3AndGlueAccessPolicy
。
-
重新整理連接許可政策頁面,然後選擇 EMRServerlessS3AndGlueAccessPolicy
。
-
在名稱中,檢閱和建立頁面中,針對角色名稱輸入角色的名稱,例如 EMRServerlessS3RuntimeRole
。若要建立此IAM角色,請選擇建立角色。
- CLI
-
-
建立名為 的檔案emr-serverless-trust-policy.json
,其中包含要用於IAM角色的信任政策。檔案應包含下列政策。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "EMRServerlessTrustPolicy",
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "emr-serverless.amazonaws.com"
}
}]
}
-
建立名為 IAM的角色EMRServerlessS3RuntimeRole
。使用您在上一個步驟中建立的信任政策。
aws iam create-role \
--role-name EMRServerlessS3RuntimeRole \
--assume-role-policy-document file://emr-serverless-trust-policy.json
請記下輸出中的 ARN。您可以在任務提交期間使用新角色ARN的 ,在此之後稱為 job-role-arn
。
-
建立名為 的檔案emr-sample-access-policy.json
,以定義工作負載IAM的政策。這可讓您讀取存放在公有 S3 儲存貯體中的指令碼和資料,以及讀取寫入存取 amzn-s3-demo-bucket
。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadAccessForEMRSamples",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::*.elasticmapreduce",
"arn:aws:s3:::*.elasticmapreduce/*"
]
},
{
"Sid": "FullAccessToOutputBucket",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
",
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
]
},
{
"Sid": "GlueCreateAndReadDataCatalog",
"Effect": "Allow",
"Action": [
"glue:GetDatabase",
"glue:CreateDatabase",
"glue:GetDataBases",
"glue:CreateTable",
"glue:GetTable",Understanding default application behavior, including auto-start and auto-stop, as well as maximum capacity and worker configurations for configuring an application with &EMRServerless;.
"glue:UpdateTable",
"glue:DeleteTable",
"glue:GetTables",
"glue:GetPartition",
"glue:GetPartitions",
"glue:CreatePartition",
"glue:BatchCreatePartition",
"glue:GetUserDefinedFunctions"
],
"Resource": ["*"]
}
]
}
-
使用您在步驟 3 中建立IAM的政策檔案建立名為 EMRServerlessS3AndGlueAccessPolicy
的政策。 請注意輸出ARN中的 ,因為您將在下一個步驟中使用新政策ARN的 。
aws iam create-policy \
--policy-name EMRServerlessS3AndGlueAccessPolicy \
--policy-document file://emr-sample-access-policy.json
在輸出ARN中記下新政策的 。您將在下一個步驟policy-arn
中將其取代為 。
-
將IAM政策連接至EMRServerlessS3AndGlueAccessPolicy
任務執行期角色 EMRServerlessS3RuntimeRole
。
aws iam attach-role-policy \
--role-name EMRServerlessS3RuntimeRole \
--policy-arn policy-arn