AWS Lambda
Guia do desenvolvedor

Acessar recursos da AWS de uma função do Lambda

O Lambda não impõe restrições na sua lógica de função. Se você puder codificá-la, conseguirá executá-la em uma função do Lambda. Como parte da sua função, talvez seja necessário chamar outras APIs ou acessar outros serviços da AWS, como bancos de dados.

Acessar os Serviços da AWS

Para acessar outros serviços da AWS, você pode usar o SDK da AWS. O AWS Lambda define automaticamente as credenciais exigidas pelo SDK para as funções do IAM associadas à sua função – você não precisa executar nenhuma etapa adicional. Por exemplo, veja a seguir um código de exemplo usando o Python SDK para acessar um objeto do S3.

import boto3 import botocore BUCKET_NAME = 'my-bucket' # replace with your bucket name KEY = 'my_image_in_s3.jpg' # replace with your object key s3 = boto3.resource('s3') try: s3.Bucket(BUCKET_NAME).download_file(KEY, 'my_local_image.jpg') except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == "404": print("The object does not exist.") else: raise

Por conveniência, o AWS Lambda inclui versões do SDK da AWS como parte do ambiente de execução para que você não precise incluí-las. Consulte Tempo de execução do AWS Lambda para a versão do SDK incluído. Recomendamos que você inclua sua própria cópia do AWS SDK para aplicativos de produção. Assim, será possível controlar suas dependências.

Acesso aos serviços que não são da AWS

Você pode incluir qualquer SDK para acessar serviços como parte da sua função Lambda. Por exemplo, você pode incluir o SDK para Twilio para acessar informações da sua conta do Twilio. Você pode usar Variáveis de ambiente do AWS Lambda para armazenar as informações de credencial dos SDKs depois de criptografar as credenciais.

Acesso a serviços e recursos privados

Por padrão, seu serviço ou sua API precisam estar acessíveis na Internet pública para que o AWS Lambda os acesse. No entanto, pode haver APIs ou serviços que não estão expostos dessa forma. Geralmente, você cria esses recursos dentro da Amazon Virtual Private Cloud (Amazon VPC) para que eles não possam ser acessados pela Internet pública. Esses podem ser recursos de serviços da AWS, como data warehouses do Amazon Redshift, clusters do Amazon ElastiCache ou instâncias do Amazon RDS. Podem também ser seus próprios serviços executados em suas instâncias do EC2. Por padrão, os recursos dentro de uma VPC não podem ser acessados de dentro de uma função Lambda.

O AWS Lambda executa seu código de função com segurança dentro de uma VPC por padrão. No entanto, para permitir que sua função do Lambda acesse os recursos dentro da sua VPC privada, é preciso fornecer informações adicionais de configuração específicas da VPC que incluam IDs de sub-rede da VPC e IDs do grupo de segurnaça. O AWS Lambda usa essas informações para configurar interfaces de rede elástica (ENIs) que permitem que sua função se conecte com segurança a outros recursos dentro da sua VPC privada.

Importante

O AWS Lambda não oferece suporte a conexão a recursos dentro de VPCs de locação dedicada. Para obter mais informações, consulte VPCs dedicadas.

Para aprender a configurar uma função Lambda para acessar recursos dentro de uma VPC, consulte Configurar uma função Lambda para acessar recursos em uma VPC