
Compartilhar:
Adam é um desenvolvedor e consultor que gosta de corridas de ultramaratona, escrever em blogs e gravar vlogs, além de ajudar outras pessoas a dominar a tecnologia para realizar coisas incríveis, movido por um desejo insaciável de orientar e ajudar.
Como funcionam as permissões no AWS Lambda
Ao trabalhar com o AWS Lambda, muitos usuários enfrentam dificuldades com as permissões ao utilizar outros serviços da AWS. Mais especificamente, como acessar serviços como o S3, o RDS, o Transcribe ou outros.
Muitos criam um novo usuário do IAMe definem AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY nas variáveis de ambiente. O SDK da AWS usa “automaticamente” essas chaves ou valores de um arquivo de credenciais da AWS. (Consulte a documentação sobre como o SDK usa esses valores.) No entanto, adicionar essas credenciais a uma função Lambda seria um erro.
Identidade equivocada
Tentar o seguinte .env impede que um aplicativo acesse os serviços da AWS a partir do Lambda. A falha na conexão ocorre independentemente de como você configurou o usuário do IAM.
À medida que a função Lambda é implantada, as variáveis de ambiente mostradas acima são geradas pelo Lambda. Ou seja, os valores do arquivo .env não são definidos como esperado.
Para saber mais sobre como fazer a implantação com a tecnologia serverless, confira AWS Lambda com PHP usando Bref e Serverless Framework ou Python sem servidor com o AWS Lambda.
Definição de permissões
Com variáveis de ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY definidas pelo Lambda, as permissões da função também precisam ser definidas durante a implantação. Todos os serviços da AWS também são gerenciados diretamente na função Lambda, em vez de por um usuário do IAM.
Abaixo está um exemplo parcial em YAML que utiliza o framework Serverless para implantar uma função do AWS Lambda.
provider:
name: aws
region: us-east-1
runtime: provided
iamRoleStatements:
- Effect: Allow
Action:
- s3:PutObject
- s3:GetObject
- s3:DeleteObject
Resource: 'arn:aws:s3:::bucket-name/*'
- Effect: Allow
Action: transcribe:*
Resource: '*'Observe o iamRoleStatements bloco no exemplo acima. Nele, é concedido ao Lambda s3:PutObject, s3:GetObjecte s3:DeleteObject permissões para o recurso bucket-name e a tudo o que nele estiver contido. Além disso, a função tem acesso aos transcribe:* serviços.
O exemplo acima é muito semelhante à forma como as permissões do IAM são definidas nos exemplos a seguir:
AWS IAM S3 Policy Example
AWS IAM Transcribe Policy Example
Analisando as permissões
Após a implantação bem-sucedida no AWS Lambda, as permissões ativas da função podem ser visualizadas no Console da AWS. Para isso, acesse a guia “Permissões” no console da função.
AWS Lambda Function Permissions
A partir daí, você pode clicar nas permissões de cada serviço para obter uma descrição mais detalhada de como configurá-las.
E agora?
A documentação sobre as possíveis permissões para diversos serviços da AWS está disponível na Documentação do AWS Identity and Access Management. Além disso, fique atento a futuras publicações com exemplos práticos do uso dessas permissões.