{"id":22120964,"url":"https://github.com/wesleysbmartins/aws_lambda","last_synced_at":"2025-12-30T23:27:39.923Z","repository":{"id":264712151,"uuid":"894035044","full_name":"wesleysbmartins/aws_lambda","owner":"wesleysbmartins","description":"Projeto de estudos sobre o que é e como usar AWS Lambda, adicionando documentações e tutoriais sobre como usar este recurso com NodeJS e Golang.","archived":false,"fork":false,"pushed_at":"2024-11-25T22:14:41.000Z","size":337,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-29T12:29:31.951Z","etag":null,"topics":["api-gateway","aws","aws-api-gateway","aws-apigateway","aws-lambda","aws-serverless","cloud","go","golang","lambda","lambda-functions","nodejs","serverless"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wesleysbmartins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-25T16:28:05.000Z","updated_at":"2024-11-26T00:43:03.000Z","dependencies_parsed_at":"2024-11-25T23:33:16.931Z","dependency_job_id":null,"html_url":"https://github.com/wesleysbmartins/aws_lambda","commit_stats":null,"previous_names":["wesleysbmartins/aws_lambda"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysbmartins%2Faws_lambda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysbmartins%2Faws_lambda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysbmartins%2Faws_lambda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysbmartins%2Faws_lambda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wesleysbmartins","download_url":"https://codeload.github.com/wesleysbmartins/aws_lambda/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245224192,"owners_count":20580362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","aws","aws-api-gateway","aws-apigateway","aws-lambda","aws-serverless","cloud","go","golang","lambda","lambda-functions","nodejs","serverless"],"created_at":"2024-12-01T14:31:50.260Z","updated_at":"2025-12-30T23:27:39.896Z","avatar_url":"https://github.com/wesleysbmartins.png","language":"Go","readme":"# AWS Lambda [![My Skills](https://skillicons.dev/icons?i=aws,nodejs,golang)](https://skillicons.dev)\nO AWS Lambda é um serviço de computação serverless oferecido pela Amazon Web Services (AWS) que permite executar código sem a necessidade de gerenciar servidores. Ele segue um modelo baseado em eventos, onde o código é executado em resposta a eventos específicos, como mudanças em dados em um bucket do Amazon S3, atualizações em um banco de dados DynamoDB, mensagens em filas (SQS), solicitações HTTP via API Gateway, entre outros.\n\n## Características  e Vantagens\n\n- **Serverless:** Não é necessário provisionar ou gerenciar servidores. A AWS cuida da infraestrutura e da escalabilidade automaticamente.\n\n- **Baseado em Eventos:** Executa funções em resposta a eventos gerados por outros serviços AWS ou fontes externas.\n\n- **Execução Sob Demanda:** Você só paga pelo tempo em que seu código está em execução, em incrementos de milissegundos, e pela quantidade de solicitações.\n\n- **Suporte a Vários Idiomas:** Suporta várias linguagens de programação, como Python, JavaScript (Node.js), Java, C#, Go, Ruby e outros. Também é possível executar linguagens adicionais usando runtimes personalizados.\n\n- **Escalabilidade Automática:** Escala automaticamente com base no número de eventos, sem a necessidade de configuração manual.\n\n- **Integração com outros Serviços AWS:** Funciona bem com diversos serviços AWS, como S3, DynamoDB, API Gateway, SQS, SNS, e muitos outros.\n\n- **Custo-efetivo:** para aplicações com demandas variáveis.\n\n- **Rápido desenvolvimento:** com menos preocupações com a infraestrutura.\n\n- **Alta disponibilidade:** embutida sem configurações adicionais.\n\n## Exemplo Lambda NodeJS\nPara criar uma Lambda Function você pode acessar o painel inicial da AWS e pesquisar por Lambda e selecionar. Clicar em criar função, manter a opção de **criar do zero**, adicionar o nome da sua função, o tempo de execução com a versão do **Node.js 22.x**, arquitetura **x86_64**, e selecionar **Criar função**.\n![Criandot](./resource/create.png)\n\nAdicione um gatilho selecionando a opção **API Gateway**, que criar-a um endereço para que voce realize requisições.\n![Gatilho](./resource/gateway.png)\n\nInsira seu código tendo em mente que, por padrão as Lambdas executam a função nomeada como **handler**\n, por exemplo:\n\n```js\nexport const hanlder = async (event, context) =\u003e {\n    // event seria sua request\n    // context seria o trace da operação\n    \n    const response = {\n        statusCode: 200,\n        body: JSON.stringify(\"Hello World!\"),\n    };\n\n    return response;\n};\n```\nSelecione a aba de **Configurações** e encontre o **Endpoint da sua API Gateway**, selecione ou execute uma requisição POST usando este endereço.\n\n## Exemplo Lambda Golang\nPara criar uma Lambda Function você pode acessar o painel inicial da AWS e pesquisar por Lambda e selecionar. Clicar em criar função, manter a opção de **criar do zero**, adicionar o nome da sua função, o tempo de execução com a versão do **Amazon Linux 2023**, arquitetura **x86_64**, e selecionar **Criar função**. Diferente do NodeJS, para criar uma Lambda usando Golang você deve utilizar um arquivo **.zip** com os binários da sua aplicação, então vamos cria-la.\n\nAbra seu terminal na pasta em que deseja criar sua aplicação e execute:\n\nPara iniciar a aplicação:\n```shell\ngo mod init myGolamgLambda\n```\n\nInstalar a dependência para zipar o build:\n```shell\ngo.exe install github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest\n```\nInstalar as dependências da AWS para Go:\n```shell\ngo get github.com/aws/aws-lambda-go/events\n```\n\n```shell\ngo get github.com/aws/aws-lambda-go/lambda\n```\n\nCrie seu arquivo **main.go** com sua função main e sua função handler:\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-lambda-go/events\"\n\t\"github.com/aws/aws-lambda-go/lambda\"\n)\n\nfunc handler(request events.APIGatewayProxyRequest) (response events.APIGatewayProxyResponse, err error) {\n\tfmt.Println(\"Hello World!\")\n\n\tresponse = events.APIGatewayProxyResponse{\n\t\tStatusCode: 200,\n\t\tBody:       \"Hello World!\",\n\t}\n\n\treturn response, err\n}\n\nfunc main() {\n\tlambda.Start(handler)\n}\n```\n\nConfigure as variáveis de ambiente para trabalhar com sistema operacional Linux, arquitetura AMD x86_64, faça o build e crie o zip.\n\nLinux:\n```bash\nGOOS=linux GOARCH=amd64 go build -o bootstrap main.go\nzip lambda-handler.zip bootstrap\n```\n\nWindows cmd:\n```cmd\nset GOOS=linux\nset GOARCH=amd64\nset CGO_ENABLED=0\ngo build -o bootstrap main.go\n%USERPROFILE%\\Go\\bin\\build-lambda-zip.exe -o lambda-handler.zip bootstrap\n```\n\nWindows Powershell:\n```powershell\n$env:GOOS = \"linux\"\n$env:GOARCH = \"amd64\"\n$env:CGO_ENABLED = \"0\"\ngo build -o bootstrap main.go\n~\\Go\\Bin\\build-lambda-zip.exe -o lambda-handler.zip bootstrap\n```\n\nCom sua aplicação desenvolvida e seu zip disponível, volta a sua página da AWS, na ába **Código** clique em **Fazer upload de** e selecione **Arquivo .zip**.\n![Zip](./resource/zip.png)\n\nSeu navegador do Lambda deve ser como este:\n![bootstrap](./resource/bootstrap.png)\n\nO seu executável deve se chamar bootstrap obrigatóriamente, junto a sua configuração de tempo de execução que esta mais na ába **Código**, selecione editar e altere o nome do seu manipulador que deve ser \"nome do zip\".handler:\n![runtime](./resource/runtime.png)\n\nSendo assim, você precisa apenar criar seu API Gateway como um gatilho da aplicação e executar seu endpoint semelhante ao que fizemos na Lambda do NodeJS.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesleysbmartins%2Faws_lambda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwesleysbmartins%2Faws_lambda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesleysbmartins%2Faws_lambda/lists"}