Quero que minha função do AWS Lambda acesse meu bucket do Amazon Simple Storage Service (Amazon S3).
Breve descrição
Para conceder à sua função do Lambda acesso a um bucket do Amazon S3 na mesma conta da AWS, conclua as seguintes etapas:
- Crie um perfil do AWS Identity and Access Management (AWS IAM) para a função do Lambda que também conceda acesso ao bucket do Amazon S3.
- Configure o perfil do IAM como o perfil de execução da função do Lambda.
- Verifique se a política de bucket do Amazon S3 não nega explicitamente o acesso à função do Lambda ou ao seu perfil de execução.
Importante: se o bucket do Amazon S3 e o perfil do IAM da função estiverem em contas diferentes, conceda as permissões necessárias na política do bucket do Amazon S3. Para mais informações, consulte Como conceder acesso entre contas a objetos que estão em buckets do Amazon S3?
Resolução
Criar um perfil do IAM para a função do Lambda que também conceda acesso ao bucket do Amazon S3
Para criar um perfil do IAM para a função do Lambda que também concede acesso ao bucket do Amazon S3, conclua as seguintes etapas:
-
Crie uma função de execução no console do IAM.
-
Na lista de perfis do IAM, escolha aquele que você criou.
-
Para configurar a política de confiança para permitir que o Lambda assuma o perfil de execução, adicione lambda.amazonaws.com como um serviço confiável. Escolha a guia Relações de confiança e selecione Editar política de confiança.
-
Substitua as variáveis na política pelas seguintes variáveis:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
Escolha Atualizar política.
-
Na guia Permissões, escolha Adicionar política em linha.
-
Escolha a guia JSON.
-
Insira uma política do IAM baseada em recursos que conceda acesso ao bucket do Amazon S3. Para mais informações, consulte Uso de políticas baseadas em recursos para o Lambda. O exemplo de política do IAM a seguir concede acesso a um bucket específico do Amazon S3 com permissões Get. Para acessar os objetos dentro do bucket do Amazon S3, especifique o caminho correto ou use um caractere curinga ("*"). Para mais informações, consulte Writing IAM Policies: how to grant access to an Amazon S3 bucket (Como escrever políticas do IAM: como conceder acesso a um bucket do Amazon S3).
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::example-bucket/*"
]
}
]
}
Observação: substitua "arn:aws:s3:::example-bucket" pelo nome do recurso da Amazon (ARN) dos seus buckets do Amazon S3. Se você criptografou o objeto com uma chave do AWS Key Management Service (AWS KMS), também deverá fornecer as permissões necessárias. Para mais informações, consulte How do I allow users to download from and upload to an Amazon S3 bucket that I encrypted with a customer managed AWS KMS key? (Como eu permito que os usuários baixem e façam o upload para um bucket do Amazon S3 que eu criptografei com uma chave do AWS KMS gerenciada pelo cliente?)
-
Escolha Revisar política.
-
Em Nome, insira um nome para a política.
-
Selecione Criar política.
Configurar o perfil do IAM como o perfil de execução da função do Lambda
Para configurar o perfil do IAM como o perfil de execução da função do Lambda, conclua as seguintes etapas:
- Abra o console do Lambda.
- Escolha sua função do Lambda.
- Em Perfil de execução, em Perfil existente, selecione o perfil do IAM que você criou.
- Escolha Salvar.
Verificar se a política de bucket do Amazon S3 não nega explicitamente o acesso à função do Lambda ou ao seu perfil de execução
Use o console do Amazon S3 para revisar a política de bucket do Amazon S3. Verifique se sua política permite acesso à sua função do Lambda e ao seu perfil de execução.
O exemplo a seguir de uma política do IAM concede acesso entre contas a um bucket do Amazon S3 para um perfil de execução do Lambda:
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::example-bucket/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
]
}
}
]
}
Observação: substitua "arn:aws:s3:::example-bucket" pelo ARN do seu bucket do Amazon S3 e "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" pelo ARN do seu perfil de execução do Lambda.
Informações relacionadas
Gerador de políticas da AWS