Amazon EMR tem o prazer de anunciar a integração com o Amazon Simple Storage Service (Amazon S3) Concessões de acesso que simplificam o gerenciamento de permissões do Amazon S3 e permitem impor acesso granular em escala. Com essa integração, você pode dimensionar o acesso ao Amazon S3 baseado em trabalho para trabalhos do Apache Spark em todas as opções de implantação do Amazon EMR e impor acesso granular ao Amazon S3 para melhorar a postura de segurança.
Nesta postagem, veremos alguns cenários diferentes de como usar concessões de acesso do Amazon S3. Antes de começarmos a percorrer a integração do Amazon EMR e do Amazon S3 Access Grants, configuraremos e configuraremos as concessões de acesso do S3. Então, usaremos o Formação da Nuvem AWS modelo abaixo para criar um Amazon EMR no Amazon Elastic Compute Cloud (Amazon EC2) Cluster, um aplicativo EMR Serverless e duas funções de trabalho diferentes.
Após a configuração, executaremos alguns cenários de como você pode usar o Amazon EMR com concessões de acesso S3. Primeiro, executaremos um trabalho em lote no EMR no Amazon EC2 para importar dados CSV e converter para Parquet. Em segundo lugar, usaremos o Amazon EMR Studio com um aplicativo EMR Serverless interativo para analisar os dados. Por fim, mostraremos como configurar o acesso entre contas para concessões de acesso do Amazon S3. Muitos clientes usam contas diferentes em toda a organização e até mesmo fora da organização para compartilhar dados. As concessões de acesso do Amazon S3 facilitam a concessão de acesso entre contas aos seus dados, mesmo durante a filtragem por prefixos diferentes.
Além desta postagem, você pode aprender mais sobre concessões de acesso ao Amazon S3 em Dimensionamento do acesso a dados com concessões de acesso do Amazon S3.
Pré-requisitos
Antes de iniciar a pilha do AWS CloudFormation, certifique-se de ter o seguinte:
- Uma conta da AWS que fornece acesso aos serviços da AWS
- A versão mais recente da AWS Command Line Interface (CLI da AWS)
- Um AWS Identity and Access Management (AWS IAM) usuário com uma chave de acesso e uma chave secreta para configurar a AWS CLI e permissões para criar uma função do IAM, políticas do IAM e pilhas no AWS CloudFormation
- Uma segunda conta AWS se desejar testar a funcionalidade entre contas
Passo a passo
Crie recursos com AWS CloudFormation
Para usar concessões de acesso do Amazon S3, você precisará de um cluster com Amazon EMR 6.15.0 ou posterior. Para obter mais informações, consulte a documentação para usar concessões de acesso do Amazon S3 com um Cluster do Amazon EMR, um Amazon EMR no cluster EKSE um Aplicativo sem servidor do Amazon EMR. Para os fins desta postagem, presumiremos que você tem dois tipos diferentes de usuários com acesso a dados em sua organização: engenheiros analíticos com acesso de leitura e gravação aos dados no bucket e analistas de negócios com acesso somente leitura. Utilizaremos duas funções diferentes do AWS IAM, mas você também pode conectar seu próprio provedor de identidade diretamente ao IAM Identity Center, se desejar.
Aqui está a arquitetura desta primeira parte. A pilha do AWS CloudFormation cria os seguintes recursos da AWS:
- Uma pilha de nuvem privada virtual (VPC) com sub-redes públicas e privadas para usar com o EMR Studio, tabelas de rotas e gateway de tradução de endereço de rede (NAT).
- Um bucket do Amazon S3 para artefatos EMR, como arquivos de log, código Spark e notebooks Jupyter.
- Um bucket do Amazon S3 com dados de amostra para usar com concessões de acesso do S3.
- Um cluster do Amazon EMR configurado para usar funções de tempo de execução e concessões de acesso S3.
- Um aplicativo sem servidor do Amazon EMR configurado para usar concessões de acesso do S3.
- Um Amazon EMR Studio onde os usuários podem fazer login e criar notebooks de espaço de trabalho com o aplicativo EMR Serverless.
- Duas funções AWS IAM que usaremos para nossas execuções de trabalho EMR: uma para Amazon EC2 com acesso de gravação e outra para Serverless com acesso de leitura.
- Uma função AWS IAM que será usada pelas concessões de acesso S3 para acessar dados do bucket (ou seja, a função a ser usada ao registrar um local com concessões de acesso S3. As concessões de acesso S3 usam essa função para criar credenciais temporárias).
Para começar, conclua as seguintes etapas:
- Escolha a pilha de inicialização:
- Aceite os padrões e selecione Reconheço que este modelo pode criar recursos IAM.
A pilha do AWS CloudFormation leva aproximadamente de 10 a 15 minutos para ser concluída. Assim que a pilha estiver finalizada, vá até a aba de saídas onde você encontrará as informações necessárias para as etapas seguintes.
Criar recursos de concessões de acesso do Amazon S3
Primeiro, vamos criar recursos de concessões de acesso do Amazon S3 em nossa conta. Criamos uma instância de S3 Access Grants, um local de S3 Access Grants que se refere ao nosso bucket de dados criado pela pilha AWS CloudFormation que só é acessível por nossa função AWS IAM de bucket de dados e concedemos diferentes níveis de acesso às nossas funções de leitor e gravador.
Para criar os recursos necessários de concessões de acesso do S3, use os seguintes comandos da AWS CLI como usuário administrativo e substitua qualquer um dos campos entre as setas pela saída da pilha do CloudFormation.
Em seguida, criamos um novo local de concessões de acesso S3. O que é um local? As concessões de acesso do Amazon S3 funcionam vendendo credenciais AWS IAM com acesso com escopo para um prefixo S3 específico. Um local de concessões de acesso do S3 será associado a uma função AWS IAM a partir da qual essas sessões temporárias serão criadas.
Em nosso caso, vamos definir o escopo da função AWS IAM para o bucket criado com nossa pilha AWS CloudFormation e dar acesso à função do bucket de dados criada pela pilha. Vá para a guia de saídas para encontrar os valores a serem substituídos pelo seguinte trecho de código:
Note o AccessGrantsLocationId
valor na resposta. Precisaremos disso nas próximas etapas, nas quais abordaremos a criação das concessões de acesso S3 necessárias para limitar o acesso de leitura e gravação ao seu bucket.
- Para o usuário de leitura/gravação, use
s3-control create-access-grant
para permitir acesso READWRITE ao prefixo “output/*”: - Para o usuário de leitura, use
s3control create-access-grant
novamente para permitir apenas acesso READ ao mesmo prefixo:
Cenário de demonstração 1: Amazon EMR no EC2 Spark Job para gerar dados Parquet
Agora que configuramos nossos ambientes do Amazon EMR e concedemos acesso às nossas funções por meio de concessões de acesso S3, é importante observar que as duas funções AWS IAM para nosso cluster EMR e aplicativo EMR Serverless têm uma política IAM que permite acesso apenas a nosso balde de artefatos EMR. Eles não têm acesso IAM ao nosso bucket de dados S3 e, em vez disso, usam concessões de acesso S3 para buscar credenciais de curta duração com escopo para o bucket e o prefixo. Especificamente, as funções são concedidas s3:GetDataAccess e s3:GetDataAccessGrantsInstanceForPrefix
permissões para solicitar acesso por meio da instância específica do S3 Access Grants criada em nossa região. Isso permite que você gerencie facilmente seu acesso S3 em um só lugar, de maneira altamente detalhada e granular, o que aprimora sua postura de segurança. Ao combinar S3 Access Grants com funções de trabalho no EMR no Amazon Elastic Kubernetes Service (Amazon EX) e EMR Serverless, bem como funções de tempo de execução para etapas do Amazon EMR a partir do EMR 6.7.0, você pode gerenciar facilmente o controle de acesso para consultas ou trabalhos individuais. As concessões de acesso S3 estão disponíveis no EMR 6.15.0 e versões posteriores. Vamos primeiro executar um trabalho Spark no EMR no EC2 como nosso engenheiro analítico para converter alguns dados de amostra em Parquet.
Para isso, use o código de exemplo fornecido em conversor.py. Baixe o arquivo e copie-o para o EMR_ARTIFACTS_BUCKET
criado pela pilha do AWS CloudFormation. Enviaremos nosso trabalho com a função ReadWrite AWS IAM. Observe que, para o cluster EMR, configuramos as concessões de acesso do S3 para retornar à função IAM se o acesso não for fornecido pelas concessões de acesso do S3. O DATA_WRITER_ROLE
tem acesso de leitura ao bucket de artefatos do EMR por meio de uma política do IAM para poder ler nosso script. Como antes, substitua todos os valores pelo <>
símbolos do Saídas guia da sua pilha CloudFormation.
Assim que o trabalho terminar, devemos ver alguns dados do Parquet em s3://<DATA_BUCKET>/output/weather-data/
. Você pode ver o status do trabalho no Passos guia do console EMR.
Cenário de demonstração 2: EMR Studio com um aplicativo EMR Serverless interativo para analisar dados
Agora vamos fazer login no EMR Studio e conectar-nos ao seu aplicativo EMR Serverless com a função de tempo de execução ReadOnly para analisar os dados do cenário 1. Primeiro, precisamos habilitar o endpoint interativo em seu aplicativo Serverless.
- Selecione os EMRStudioURL no Guia Saídas da sua pilha do AWS CloudFormation.
- Selecionar Aplicações sob a Serverless seção do lado esquerdo.
- Selecione os EMRBlog aplicação, então o Açao Social menu suspenso e Configurare.
- Expandir o Ponto de extremidade interativo seção e certifique-se de que Habilitar endpoint interativo está checado.
- Role para baixo e clique Configurar aplicativo para salvar suas alterações.
- De volta à página Aplicativos, selecione EMRBlog aplicação, então o Iniciar aplicação botão.
A seguir, crie um novo espaço de trabalho em nosso Studio.
- Escolha Espaços de trabalho no lado esquerdo, então o Criar espaço de trabalho botão.
- Insira um nome de espaço de trabalho, deixe os padrões restantes e escolha Criar espaço de trabalho.
- Depois de criar o espaço de trabalho, ele deverá ser iniciado em uma nova aba em alguns segundos.
Agora conecte seu Workspace ao aplicativo EMR Serverless.
- Selecione os Computação EMR botão no lado esquerdo, conforme mostrado no código a seguir.
- Escolha EMR sem servidor como o tipo de computação.
- Escolha o EMRBlog aplicativo e a função de tempo de execução que começa com EMRBlog.
- Escolha Anexar. A janela será atualizada e você poderá abrir um novo PySparkGenericName caderno e acompanhe abaixo. Para executar o código você mesmo, baixe o Bloco de notas AccessGrantsReadOnly.ipynb e carregue-o em seu espaço de trabalho usando o Fazer upload de arquivos botão no navegador de arquivos.
Vamos fazer uma leitura rápida dos dados.
Faremos uma contagem simples(*):
Você também pode ver que, se tentarmos gravar dados no local de saída, obteremos um erro do Amazon S3.
Embora você também possa conceder acesso semelhante por meio de políticas do AWS IAM, as concessões de acesso do Amazon S3 podem ser úteis para situações em que sua organização superou o gerenciamento de acesso via IAM, deseja mapear concessões de acesso do S3 para entidades ou funções do IAM Identity Center ou já usou EMR anteriormente Mapeamentos de funções do sistema de arquivos (EMRFS). As credenciais do S3 Access Grants também são temporárias, fornecendo acesso mais seguro aos seus dados. Além disso, conforme mostrado abaixo, o acesso entre contas também se beneficia da simplicidade do S3 Access Grants.
Cenário de demonstração 3 – Acesso entre contas
Um dos outros padrões de acesso mais comuns é o acesso a dados entre contas. Esse padrão tornou-se cada vez mais comum com o surgimento da malha de dados, onde produtores e consumidores de dados são descentralizados em diferentes contas da AWS.
Anteriormente, o acesso entre contas exigia a configuração de ações complexas de assunção de função entre contas e provedores de credenciais personalizados ao configurar seu trabalho do Spark. Com S3 Access Grants, só precisamos fazer o seguinte:
- Criar uma função de trabalho e um cluster do Amazon EMR em uma segunda conta de consumidor de dados
- A conta do produtor de dados concede acesso à conta do consumidor de dados com uma nova política de recursos de instância
- A conta do produtor de dados cria uma concessão de acesso para a função de consumidor de dados
E é isso! Se você tiver uma segunda conta em mãos, vá em frente e implante esta pilha do AWS CloudFormation na conta do consumidor de dados, para criar um novo aplicativo EMR Serverless e uma função de trabalho. Caso contrário, basta seguir abaixo. A pilha do AWS CloudFormation deve terminar de ser criada em menos de um minuto. A seguir, vamos conceder ao nosso consumidor de dados acesso à instância S3 Access Grants em nossa conta de produtor de dados.
- Substituir
<DATA_PRODUCER_ACCOUNT_ID>
e<DATA_CONSUMER_ACCOUNT_ID>
com os IDs de conta da AWS relevantes de 12 dígitos. - Você também pode precisar alterar a região no comando e na política.
- E, em seguida, conceda acesso READ à pasta de saída para nossa função EMR Serverless na conta do consumidor de dados.
Agora que fizemos isso, podemos ler os dados na conta do consumidor de dados do intervalo na conta do produtor de dados. Vamos apenas executar um simples COUNT(*)
de novo. Substitua o <APPLICATION_ID>
, <DATA_CONSUMER_JOB_ROLE>
e <DATA_CONSUMER_LOG_BUCKET>
com os valores da guia Saídas na pilha do AWS CloudFormation criada em sua segunda conta.
E substitua <DATA_PRODUCER_BUCKET>
com o balde da sua primeira conta.
Aguarde até que o trabalho atinja um estado concluído e, em seguida, busque o log stdout do seu bucket, substituindo o <APPLICATION_ID>
, <JOB_RUN_ID>
do trabalho acima, e <DATA_CONSUMER_LOG_BUCKET>
.
Se você estiver em uma máquina baseada em Unix e tiver gunzip instalado, você poderá usar o seguinte comando como seu usuário administrativo.
Observe que este comando usa apenas políticas de função do AWS IAM, e não concessões de acesso do Amazon S3.
Caso contrário, você pode usar o obter painel para execução de trabalho comando e abra a URL resultante em seu navegador para visualizar os logs stdout do driver na guia Executores da UI do Spark.
Limpando
Para evitar incorrer em custos futuros com recursos de exemplo em suas contas da AWS, siga as seguintes etapas:
- Você deve excluir manualmente o espaço de trabalho do Amazon EMR Studio criado na primeira parte da postagem
- Esvazie os buckets do Amazon S3 criados pelas pilhas do AWS CloudFormation
- Certifique-se de excluir as concessões de acesso do Amazon S3, as políticas de recursos e o local das concessões de acesso do S3 criadas nas etapas acima usando o
delete-access-grant
,delete-access-grants-instance-resource-policy
,delete-access-grants-location
edelete-access-grants-instance
comandos. - Exclua as pilhas do AWS CloudFormation criadas em cada conta
Comparação com mapeamento de funções AWS IAM
Em 2018, o EMR introduziu o mapeamento de funções do EMRFS como uma forma de fornecer autorização no nível de armazenamento, configurando o EMRFS com várias funções do IAM. Embora eficaz, o mapeamento de funções exigia o gerenciamento local de usuários ou grupos em seu cluster EMR, além de manter os mapeamentos entre essas identidades e suas funções IAM correspondentes. Em combinação com funções de tempo de execução no EMR no EC2 e cargos para EMR em EKS e EMR sem servidor, agora é mais fácil conceder acesso aos seus dados no S3 diretamente ao principal relevante por trabalho.
Conclusão
Nesta postagem, mostramos como configurar e usar concessões de acesso do Amazon S3 com o Amazon EMR para gerenciar facilmente o acesso a dados para suas cargas de trabalho do Amazon EMR. Com concessões de acesso do S3 e EMR, você pode configurar facilmente o acesso aos dados no S3 para identidades do IAM ou usar seu diretório corporativo no IAM Identity Center como fonte de identidade. O S3 Access Grants é compatível com EMR no EC2, EMR no EKS e EMR Serverless a partir da versão 6.15.0 do EMR.
Aprender mais, veja as concessões de acesso S3 e Documentação EMR e fique à vontade para fazer qualquer pergunta nos comentários!
Sobre o autor
Damon Cortesi é principal defensor do desenvolvedor da Amazon Web Services. Ele cria ferramentas e conteúdo para ajudar a facilitar a vida dos engenheiros de dados. Quando não está trabalhando duro, ele ainda cria pipelines de dados e divide logs em seu tempo livre.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/big-data/use-amazon-emr-with-s3-access-grants-to-scale-spark-access-to-amazon-s3/
- :tem
- :é
- :não
- :onde
- $UP
- 1
- 10
- 100
- 107
- 11
- 1232
- 15%
- 20
- 2018
- 500
- 7
- 8
- a
- Sobre
- acima
- Acesso
- gerenciamento de acesso
- Acesso a dados
- acessível
- acessando
- Conta
- Contas
- reconhecer
- em
- Açao Social
- ações
- Adição
- endereço
- administrativo
- advogado
- novamente
- à frente
- Todos os Produtos
- permitir
- permite
- juntamente
- tb
- Amazon
- Amazon EC2
- Serviço Amazon Elastic Kubernetes
- Amazon EMR
- Amazon Web Services
- an
- Analistas
- analítica
- analisar
- e
- Anunciar
- Outro
- qualquer
- apache
- Apache Spark
- Aplicação
- aplicações
- aproximadamente
- arquitetura
- SOMOS
- AS
- perguntar
- associado
- assumir
- At
- autorização
- disponível
- evitar
- AWS
- Formação da Nuvem AWS
- em caminho duplo
- base
- BE
- tornam-se
- antes
- Começo
- abaixo
- Benefícios
- Melhor
- entre
- navegador
- Constrói
- negócio
- mas a
- botão
- by
- CAN
- casas
- Centralização de
- alterar
- Alterações
- verificado
- Escolha
- clique
- cliente
- Na nuvem
- Agrupar
- código
- combinação
- combinando
- comum
- completar
- Efetuado
- integrações
- Computar
- configurado
- configurando
- Contato
- consumidor
- Consumidores
- conteúdo
- continuar
- ao controle
- converter
- Responsabilidade
- Correspondente
- custos
- crio
- criado
- cria
- Criar
- Credenciais
- personalizadas
- Clientes
- dados,
- acesso a dados
- Descentralizada
- Padrão
- defaults
- implantar
- desenvolvimento
- Developer
- diferente
- diretamente
- do
- documentação
- feito
- down
- download
- motorista
- e
- cada
- mais fácil
- facilmente
- fácil
- efeito
- Eficaz
- emergência
- permitir
- Ponto final
- aplicar
- engenheiro
- Engenheiros
- Melhora
- garantir
- ambientes
- erro
- Éter (ETH)
- Mesmo
- exemplos
- executar
- Cair
- Moda
- sentir
- poucos
- Campos
- Envie o
- Arquivos
- filtragem
- Finalmente
- Encontre
- acabamento
- Primeiro nome
- seguir
- seguinte
- Escolha
- Gratuito
- da
- futuro
- porta de entrada
- gerar
- ter
- OFERTE
- Go
- vai
- tem
- conceder
- concedido
- subsídios
- Grupo
- Do grupo
- acessível
- Queijos duros
- Ter
- he
- ajudar
- altamente
- sua
- Colméia
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTML
- HTTPS
- i
- IAM
- ID
- identidades
- Identidade
- gerenciamento de identidade e acesso
- ids
- if
- importar
- importante
- in
- cada vez mais
- Individual
- INFORMAÇÕES
- instância
- em vez disso
- integração
- interativo
- Interface
- para dentro
- introduzido
- IT
- Trabalho
- Empregos
- jpg
- apenas por
- Chave
- Kubernetes
- mais tarde
- mais recente
- lançamento
- APRENDER
- Deixar
- níveis
- como
- LIMITE
- Line
- Vidas
- localmente
- localização
- log
- entrar
- máquina
- manutenção
- fazer
- gerencia
- de grupos
- gestão
- manualmente
- muitos
- mapa,
- mapeamento
- Posso..
- malha
- minuto
- minutos
- mais
- múltiplo
- devo
- nome
- necessário
- você merece...
- rede
- Novo
- Próximo
- não
- nota
- caderno
- laptops
- agora
- of
- on
- uma vez
- ONE
- só
- aberto
- Opções
- or
- ordem
- organização
- Outros
- A Nossa
- saída
- outputs
- lado de fora
- próprio
- página
- parte
- particular
- padrão
- padrões
- permissão
- permissões
- Lugar
- platão
- Inteligência de Dados Platão
- PlatãoData
- satisfeito
- políticas
- Privacidade
- Publique
- anteriormente
- Diretor
- diretores
- privado
- produtor
- Produtores
- fornecer
- fornecido
- provedor
- fornecedores
- fornece
- fornecendo
- público
- propósito
- consultas
- Frequentes
- Links
- alcançar
- Leia
- Leitor
- refere-se
- região
- registro
- liberar
- relevante
- remanescente
- substituir
- solicitar
- requeridos
- recurso
- Recursos
- resposta
- resultando
- Tipo
- papéis
- Rota
- Execute
- é executado
- mesmo
- Salvar
- Escala
- cenário
- cenários
- escopo
- escrita
- Segundo
- segundo
- Segredo
- Seção
- seguro
- segurança
- Vejo
- selecionar
- Serverless
- serviço
- Serviços
- sessões
- conjunto
- contexto
- instalação
- Partilhar
- rede de apoio social
- mostrar
- mostrou
- mostrando
- lado
- semelhante
- simples
- simplicidade
- simplifica
- situações
- fragmento
- So
- alguns
- fonte
- Faísca
- específico
- especificamente
- splits
- SQL
- pilha
- Pilhas
- começado
- Comece
- começa
- Estado
- Declaração
- Status
- Passos
- Ainda
- armazenamento
- estudo
- enviar
- sub-redes
- sucesso
- Suportado
- certo
- .
- Tire
- toma
- modelo
- temporário
- teste
- que
- A
- deles
- então
- Este
- deles
- isto
- aqueles
- Através da
- tempo
- para
- ferramentas
- Tradução
- tentar
- dois
- tipo
- tipos
- ui
- para
- URL
- usar
- usava
- Utilizador
- usuários
- usos
- utilização
- utilizar
- valor
- Valores
- versão
- via
- Ver
- Virtual
- andar
- caminhada
- quer
- Caminho..
- we
- Clima
- web
- serviços web
- BEM
- O Quê
- O que é a
- quando
- qual
- enquanto
- precisarão
- janela
- de
- Atividades:
- trabalho
- escrever
- escritor
- yaml
- ano
- Você
- investimentos
- você mesmo
- zefirnet