https://github.com/zkfmapf123/terraform-donggyu-lambda
terraform lambda template
https://github.com/zkfmapf123/terraform-donggyu-lambda
deploy iac lambda terraform
Last synced: 9 months ago
JSON representation
terraform lambda template
- Host: GitHub
- URL: https://github.com/zkfmapf123/terraform-donggyu-lambda
- Owner: zkfmapf123
- Created: 2024-02-02T14:29:56.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-12-16T09:49:56.000Z (over 1 year ago)
- Last Synced: 2024-12-27T11:38:27.994Z (over 1 year ago)
- Topics: deploy, iac, lambda, terraform
- Language: HCL
- Homepage:
- Size: 13.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Requirements
- CLI를 활용하여 배포가 가능하도록 수정하였습니다.
- ECR을 미리 생성하고 var.ecr_attr에 ecr registry를 입력해야 함
## Providers
| Name | Version |
|------|---------|
| [aws](#provider\_aws) | n/a |
| [null](#provider\_null) | n/a |
| [random](#provider\_random) | n/a |
## Modules
No modules.
## Resources
| Name | Type |
|------|------|
| [aws_iam_policy.lambda_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |
| [aws_iam_role.lambda_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
| [aws_iam_role_policy_attachment.policy_attach](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_lambda_function.function](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource |
| [null_resource.build](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
| [random_string.random](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string) | resource |
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_iam_policy_document.lambda_default_policy_document](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [auto\_deploy](#input\_auto\_deploy) | 배포 옵션입니다. | `map` |
{
"is_enable": false,
"revision": "1.0.0"
} | no |
| [common\_attr](#input\_common\_attr) | 공통 옵션입니다. | `map` | {
"name": ""
} | no |
| [compute\_attr](#input\_compute\_attr) | lambda computing 옵션입니다. | `map` | {
"architecture": "arm64",
"environments": {
"System": "lambda"
},
"logging_format": "JSON",
"memory": 128,
"timeout": 10
} | no |
| [ecr\_attr](#input\_ecr\_attr) | ecr 옵션입니다. | `map` | {
"exists_ecr_registry": ""
} | no |
| [iam\_attr](#input\_iam\_attr) | iam 옵션입니다. | `map` | {
"policy": {}
} | no |
| [network\_attr](#input\_network\_attr) | lambda computing에 network 옵션입니다. | `map` | {
"sg_ids": [],
"subnet_ids": [],
"vpc_id": null
} | no |
## Outputs
No outputs.
## Docker Image Examples
### Javascript
```Dockerfile
FROM public.ecr.aws/lambda/nodejs:20
COPY index.js ${LAMBDA_TASK_ROOT}
CMD [ "index.handler" ]
```
```javascript
exports.handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify("Hello from Lambda!"),
};
return response;
};
```
### Golang
```Dockerfile
FROM golang:1.23 as build
WORKDIR /app
COPY go.mod go.sum ./
COPY main.go .
RUN go build -tags lambda.norpc -o main main.go
FROM public.ecr.aws/lambda/provided:al2023
COPY --from=build /app/main ./main
ENTRYPOINT [ "./main" ]
```
```golang
package main
import (
"context"
"encoding/json"
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
func HandleRequest(ctx context.Context, e json.RawMessage) (string, error) {
fmt.Println("Event : ", string(e))
return "hello world-1", nil
}
func main() {
lambda.Start(HandleRequest)
}
```
## Issue
### Docker Pull 이슈
```sh
ERROR: failed to solve: public.ecr.aws/lambda/python:3.8: pulling from host public.ecr.aws failed with status code: 403 Forbidden
```
- AWS Public 이미지는 따로 로그인을 실행해야 함
```sh
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
```