As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Política de execução do IAM
Você pode especificar uma política de execução do IAM, além de uma função de execução, ao enviar execuções de trabalhos no EMR Serverless. As permissões resultantes assumidas pela execução do trabalho são a interseção das permissões na função de execução e na política de execução IAM especificada.
Conceitos básicos
Etapas para usar a política do Execution IAM:
Crie um emr-serverless
aplicativo ou use um existente e, em seguida, execute o seguinte aws cli para iniciar a execução de um trabalho com uma política de IAM embutida:
aws emr-serverless start-job-run --region us-west-2 \ --application-id
application-id
\ --execution-role-arnexecution-role-arn
\ --job-driverjob-driver-options
\ --execution-iam-policy '{"policy": "inline-policy
"}'
Exemplos de comandos CLI
Se tivermos a seguinte política armazenada no policy.json
arquivo na máquina:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket", "arn:aws:s3:::my-test-bucket/*" ] } ] }
Em seguida, podemos iniciar um trabalho com essa política usando o seguinte AWS CLI comando:
aws emr-serverless start-job-run --region us-west-2 \ --application-id
application-id
\ --execution-role-arnexecution-role-arn
\ --job-driverjob-driver-options
--execution-iam-policy '{ "policy": "'"$(sed 's/"/\"/g' policy.json | tr -d '[:space:]')"'" }'
Você também pode usar ambas as políticas AWS e as gerenciadas pelo cliente, especificando-as ARNs por meio de:
aws emr-serverless start-job-run --region us-west-2 \ --application-id
application-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" ] }'
Também é possível especificar uma política de IAM em linha e uma política gerenciada ARNs na mesma solicitação:
aws emr-serverless start-job-run --region us-west-2 \ --application-id
application-id
\ --execution-role-arnexecution-role-arn
\ --job-driverjob-driver-options
--execution-iam-policy '{ "policy": "'"$(sed 's/"/\"/g' policy.json | tr -d '[:space:]')"'", "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'
Observações importantes
O
execution-role-policy
policy
campo s pode ter um comprimento máximo de 2048 caracteres.A string de política do IAM embutida especificada no
policy
campoexecution-iam-policy
s deve estar em conformidade com o padrão de string json, sem que novas linhas e aspas escapem, como no exemplo acima.Uma lista de até 10 políticas gerenciadas ARNs pode ser especificada como um valor para
execution-iam-policy
opolicyArns
campo s.A política gerenciada ARNs deve ser uma lista de ARN válidos AWS ou gerenciados pelo cliente. Quando um ARN de política gerenciada pelo cliente é especificado, a política deve pertencer à mesma AWS conta do EMR-S. JobRun
Quando a política de IAM embutida e as políticas gerenciadas são usadas, o texto simples que você usa para as políticas embutidas e gerenciadas combinadas não pode exceder 2.048 caracteres.
As permissões resultantes assumidas pelo JobRun são a interseção das permissões na função de execução e na política de execução IAM especificada.
Interseção de políticas
As permissões resultantes assumidas pela execução do trabalho são a interseção das permissões na função de execução e na política de execução IAM especificada. O que significa que qualquer permissão necessária deverá ser especificada em ambos os lugares JobRun para funcionar. No entanto, é possível especificar uma declaração de permissão geral adicional na política embutida para quaisquer permissões que você não pretenda atualizar ou substituir.
Exemplo
Dada a seguinte política de função do IAM de execução:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action":[ "logs:DescribeLogGroups" ], "Resource":[ "arn:aws:logs:us-west-2:12345678910:log-group::log-stream" ] }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ] } ] }
E a seguinte política de IAM em linha:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket/tenant1", "arn:aws:s3:::my-test-bucket/tenant1/*" ] }, { "Effect": "Allow", "Action":[ "logs:*", "dynamodb:*", ], "Resource":[ "*" ] } ] }
As permissões resultantes assumidas pelo JobRun são::
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket/tenant1", "arn:aws:s3:::my-test-bucket/tenant1/*" ] }, { "Effect": "Allow", "Action":[ "logs:DescribeLogGroups" ], "Resource":[ "arn:aws:logs:us-west-2:12345678910:log-group::log-stream" ] }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ] } ] }