IT STUDY LOG

[SECTION3] <마이크로서비스> DAY 4 LOG 본문

devops bootcamp 4/project log

[SECTION3] <마이크로서비스> DAY 4 LOG

roheerumi 2023. 5. 30. 17:39

# PROJECT LOG

IaC 코드 작성

serverless framework를 이용해 lambda 함수 생성 시 생성되는 리소스

 

Terraform을 이용해 IaC 코드 작성

1. terraform 인프라 환경 구성

(1) versions.tf 

(2) provider.tf 

(3) variables.tf 

- db 정보의 경우 export TF_VAR_<변수명>=<값>을 터미널에서 선언해주어야 함

(4) output.tf 

 

2. 보안 역할 및 정책 생성

(1) iam.tf

(2) aws에 생성된 리소스 확인

 

3. cloudwatch에 생성할 lambda 함수들의 log group 생성

(1) cloudwatch.tf

(2) aws에 생성된 리소스 확인

 

4. lambda 함수 생성

(1) lambda.tf

- lambda 함수의 경우 로컬이나 s3를 이용해 디렉토리, 앱에서 소스 코드를 가져올 수 있음

- 해당 경로의 소스 파일(핸들러 등 사용하는 .js 파일들)과 package.json 파일, package-lock.json 파일, node_modules 디렉터리를 zip파일로 만들어 람다 함수 배포 

(2) aws에 생성된 리소스 확인

 

5. lambda 함수의 endpoint 호출을 위해 api gateway 생성

(1) api-gw.tf

(2) aws에 생성된 리소스 확인

 

6. sns 생성

(1) sns.tf

(2) aws에 생성된 리소스 확인

 

7. sqs 생성

(1) sqs.tf

(2) aws에 생성된 리소스 확인

 

Terraform으로 구성된 인프라가 정상적으로 동작하는지 확인

# api gateway로 생성된 sales-lambda의 endpoint로 요청
$ curl -X POST https://xxxxxxxxxx.execute-api.ap-northeast-2.amazonaws.com/checkout

1. sales-lambda cloudwatch 로그 확인

2. stock-lambda cloudwatch 로그 확인 

3. stock-increase-lambda cloudwatch 로그 확인 

4. 재고 없는 상황에서 요청 > 구매 실패 > 일정시간 경과 재고 증가 > 구매 완료 과정 확인 

 

# REFERENCES

https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file

 

Terraform Registry

 

registry.terraform.io

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function

 

Terraform Registry

 

registry.terraform.io

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription

 

Terraform Registry

 

registry.terraform.io

https://serverlessland.com/patterns/terraform-lambda-layer

 

Serverless Land

Your resource for learning serverless technology.

serverlessland.com

https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/master/examples/complete/main.tf

 

GitHub - terraform-aws-modules/terraform-aws-lambda: Terraform module, which takes care of a lot of AWS Lambda/serverless tasks

Terraform module, which takes care of a lot of AWS Lambda/serverless tasks (build dependencies, packages, updates, deployments) in countless combinations 🇺🇦 - GitHub - terraform-aws-modules/terrafo...

github.com

https://registry.terraform.io/providers/hashicorp/aws/2.34.0/docs/guides/serverless-with-aws-lambda-and-api-gateway

 

Terraform Registry

 

registry.terraform.io

https://stackoverflow.com/questions/39803182/terraform-use-case-to-create-multiple-almost-identical-copies-of-infrastructure

 

Terraform use case to create multiple almost identical copies of infrastructure

I have TF templates whose purpose is to create multiple copies of the same cloud infrastructure. For example you have multiple business units inside a big organization, and you want to build out th...

stackoverflow.com

https://serverlessland.com/patterns/apigw-http-lambda-terraform

 

Serverless Land

Your resource for learning serverless technology.

serverlessland.com

https://github.com/aws-samples/serverless-patterns/tree/main/apigw-http-api-lambda-terraform

 

GitHub - aws-samples/serverless-patterns: Serverless patterns. Learn more at the website: https://serverlessland.com/patterns.

Serverless patterns. Learn more at the website: https://serverlessland.com/patterns. - GitHub - aws-samples/serverless-patterns: Serverless patterns. Learn more at the website: https://serverlessla...

github.com

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/api-gateway-basic-concept.html

 

Amazon API Gateway 개념 - Amazon API Gateway

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/Product-Page-Diagram_Amazon-API-Gateway-How-Works.png
https://github.com/hashicorp/terraform-provider-aws/tree/main/internal/service/apigatewayv2

 

GitHub - hashicorp/terraform-provider-aws: Terraform AWS provider

Terraform AWS provider. Contribute to hashicorp/terraform-provider-aws development by creating an account on GitHub.

github.com

https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on

 

The depends_on Meta-Argument - Configuration Language | Terraform | HashiCorp Developer

The depends_on meta-argument allows you to handle hidden resource or module dependencies.

developer.hashicorp.com

https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-topic-attributes.html

 

Amazon SNS 메시지 전송 상태 - Amazon Simple Notification Service

SuccessFeedbackRoleArn 및 FailureFeedbackRoleArn 속성은 사용자 대신 CloudWatch Logs를 사용할 수 있는 쓰기 액세스 권한을 Amazon SNS에 부여하는 데 사용됩니다. SuccessFeedbackSampleRate 속성은 성공적으로 전송된

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/gettingstarted-limits.html

 

Lambda 할당량 - AWS Lambda

Lambda 문서, 로그 메시지 및 콘솔은 약어 MB(MiB 대신)를 사용하여 1,024KB를 나타냅니다.

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/with-sqs.htmlhttps://github.com/hashicorp/terraform-provider-aws/tree/main/internal/service/apigatewayv2

Comments