本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
执行 IAM 策略
在 EMR Serverless 上提交作业运行时,除了执行角色之外,您还可以指定执行 IAM 策略。作业运行所采用的权限是执行角色中的权限与指定的执行 IAM 策略中的权限的交集。
开始使用
使用执行 IAM 策略的步骤:
创建一个 emr-serverless 应用程序或使用现有应用程序,然后运行以下 aws cli 以启动带有内联 IAM 策略的作业运行:
aws emr-serverless start-job-run --region us-west-2 \ --application-idapplication-id\ --execution-role-arnexecution-role-arn\ --job-driverjob-driver-options\ --execution-iam-policy '{"policy": "inline-policy"}'
CLI 命令示例
如果机器上的 policy.json 文件中存储了以下策略:
然后,我们可以使用以下 Amazon CLI 命令使用此策略启动作业:
aws emr-serverless start-job-run --region us-west-2 \ --application-idapplication-id\ --execution-role-arnexecution-role-arn\ --job-driverjob-driver-options--execution-iam-policy '{ "policy": '$(jq -c '. | @json' policy.json)' }'
您也可以同时使用客户托管策略 Amazon 和客户托管策略,通过以下方式进行指定 ARNs:
aws emr-serverless start-job-run --region us-west-2 \ --application-idapplication-id\ --execution-role-arnexecution-role-arn\ --job-driverjob-driver-options--execution-iam-policy '{ "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'
也可以在同一个请求 ARNs 中同时指定内联 IAM 策略和托管策略:
aws emr-serverless start-job-run --region us-west-2 \ --application-idapplication-id\ --execution-role-arnexecution-role-arn\ --job-driverjob-driver-options--execution-iam-policy '{ "policy": '$(jq -c '. | @json' policy.json)', "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'
重要提示
execution-role-policy的policy字段最多可包含 2048 个字符。在
execution-iam-policy的policy字段中指定的内联 IAM 策略字符串必须符合 json 字符串标准,不能像前面的示例那样对换行符和引号进行转义。ARNs 可以将最多 10 个托管策略的列表指定为
execution-iam-policy'spolicyArns字段的值。托管策略 ARNs 必须是有效 Amazon 或客户托管策略 ARN 的列表,当指定客户托管策略 ARN 时,该策略必须属于 EMR-S 的同一个 Amazon 账户。 JobRun
当同时使用内联 IAM 策略和托管策略时,用于内联策略和托管策略的明文组合不能超过 2,048 个字符。
由此产生的权限 JobRun 是执行角色和指定执行 IAM 策略中的权限的交集。
策略交集
作业运行所采用的权限是执行角色中的权限与指定的执行 IAM 策略中的权限的交集。这意味着必须在两个地方都指定任何所需的许可才能起作用。 JobRun 但是,对于您不打算更新或覆盖的任何权限,可以在内联策略中指定额外一揽子允许语句。
示例
给定以下执行 IAM 角色策略:
以及以下内联 IAM 策略:
由此产生的权限 JobRun 为::