2021년 11월 17일 수요일

[ AWS ] SAM을 통한 Lambda 개발환경 셋팅

[ 사전 설정 ]

1. aws cli

OS별 설치 방법 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2.html


2. aws sam cli

OS별 설치 방법 : https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html


3. docker 설치

Run Function을 하게 되면 Docker 환경에서 실행 됨

Mac OS일 경우 마운트 경로 추가










4. pycharm 설정

plugin에서 aws toolkit을 검색 하여 설치













aws설치 path가 잘 잡혔는지 확인













프로젝트 생성














[ SAM 명령어 ]


Step 1 - Download a sample application

$ sam init


Step 2 - Build your application

$ cd sam-app

( 코드 추가 or 수정 )

$ sam build

$ sam local invoke


Step 3 - Deploy your application

$ sam deploy --guided

or 

$ sam deploy --stack-name testLambda --s3-bucket test-bucket-name


Sam Deploy Option Ref : 

https://aws.amazon.com/ko/blogs/compute/a-simpler-deployment-experience-with-aws-sam-cli/

Sam Example Ref : 

https://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

AWS Toolkit Ref : 

https://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/welcome.html



[ AWS ] 

배포 일련의 과정을 보자면

-> Lambda 애플리케이션의 코드를 압축해 S3에 업로드

-> CodeUri가 S3 path로 설정된 CloudFormation template파일 생성, S3에 업로드

-> S3에 업로드된 파일을 이용해서 CloudFormation 스택을 생성해서 Lambda에 배포


CloudFront 과 S3를 살펴보면

배포 관련 Stack과 S3안에 파일이 생성된 것을 볼 수 있다.



2021년 11월 15일 월요일

[ Git ] 기본 명령어

[ 저장소 ]

git remote

  - git 원격저장소[Repository] 목록 확인

git remote -v

  - git 원격저장소 이름과 url 목록 확인

git remote add 저장소이름 저장소URL 

  - 저장소URL의 원격저장소를 저장소이름으로 추가

git remote rm 저장소이름

  - 저장소이름의 원격저장소 제거


[ 확인 ]

git log

  - commit 로그 확인

git status

  - 파일 상태 확인(staged, untracked, ..)

git diff

  - commit된 파일상태와 현재 수정중인 상태 비교

git diff --staged

  - commit된 파일상태와 add된 파일 상태 비교


[ 업로드 ]

git add 파일명1 파일명2

  - 해당 파일을 [Staging Area]로 이동(tracking)

git commit -m "커밋메세지"

  - editor 호출없이 바로 커밋

git push

  - 원격저장소[Repository]에 local repository[Working Directory]의 commit 내용을 올림


[ 다운로드 ]

git pull

  - 원격저장소[Repository]의 내용을 가져와서(fetch) local repository[Working Directory]에 합침(merge)



[ 브런치 ]

git branch <브랜치 이름>

 - 브런치생성

git checkout <브랜치 이름>

 - 사용할 브런치로 변경

git branch -r (-a는 로컬원격전부 확인)

 - 원격브런치 목록확인


git push origin <브랜치 이름> 

 - 로컬브런치를 원격브런치로 추가

git branch --set-upstream-to origin/<브랜치 이름> 

 - 로컬브런치와 원격브런치 연동


git branch -d <브랜치 이름>

 - 브런치 삭제

git push origin --delete <브랜치 이름>

 - 원격저장소 브런치 삭제



[ 브런치 병합 ]

git checkout master

 - master사용

git branch -a 

 - checkout 바뀌었는지 확인

git merge <브런치 이름>

 - 병합

git push

 - 원격저장소에 병합할 경우 



[ 초기설정 ]

git init

git add .

git commit -m 'init'

github에서 프로젝트 생성

git remote add origin https://github.name.com/42f-platfrom/00000.git

git push --set-upstream origin master



[ git reset ]

git reset COMMIT_ID

- 로컬 저장소 원하는 commit 시점으로 리셋


git push -f origin master

- 원격 저장소 롤백



https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html



2021년 11월 13일 토요일

[ Glue ] SageMaker와 Job Script 사용 시 Spark Session 차이점


SageMaker는 Spark-Shell과 같이 실행 시 Spark 세션 변수가 초기화 된다.

따로 define하지 않아도 print(spark) 하면 값이 할당 된 것을 볼 수 있다.

추가로 spark session 변수를 할당 하여 작업 시, 여러가지 에러를 맛본다.

반면에 Glue Job Script는 Spark 세션변수를 선언해줘야 한다.



[ SageMaker ]

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glueContext = GlueContext(SparkContext.getOrCreate())

df = spark.createDataFrame(
    [(1, "foo", "USA"),(2, "bar", "KOREA"),],
    ["id", "label", "country"]
)

df.printSchema()
df.createOrReplaceTempView("test")
spark.sql("select * from test").show()




[ Glue Job Script ]

import ...

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

....
job.commit()

[ AWS ] CloudWatch로 경보알림 설정

 [ elasticach redis에 cpu / memory 70%이상 사용시 경보 ]


1. CloudWatch 접속

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#alarmsV2:alarm/elasticach-memory?

참조 : https://aws.amazon.com/ko/elasticache/redis/faqs/


2. 좌측경보메뉴 클릭 -> 경보생성


3. 해당지표 검색하여 경보생성

- CPU 관련 지표 : EngineCPUUtilization

- 메모리관련 지표 : DatabaseMemoryUsagePercentage


4. Amazon SNS에서 주제/구독 생성 및 확인


5. 구독시 설정한 메일에서 구독확인



지표 레지스터 정리표

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/elb-cloudwatch-metrics.html#loadbalancing-metrics-clb

[ Nifi ] Firebase Bigquery Nifi 연결

파이어베이스 BigQuery 설정

 https://spiralmoon.tistory.com/entry/Firebase-Firebase%EC%97%90-BigQuery-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0


서비스계정만들기 

https://cloud.google.com/docs/authentication/getting-started?hl=ko


Bigquery jdbc driver jar 다운로드

https://dbschema.com/jdbc-driver/GoogleBigQuery.html

  • Required File(s): googlebigqueryjdbc42.jar
  • Java Driver Class: com.simba.googlebigquery.jdbc42.Driver
  • URL: jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId={DB};OAuthType=1;
  • Website: Google Big Query

심바 JDBC PDF
file:///C:/Program%20Files/Simba%20ODBC%20Driver%20for%20Google%20BigQuery/Simba%20ODBC%20Driver%20for%20Google%20BigQuery%20Install%20and%20Configuration%20Guide.pdf


각 나이파이 lib디렉토리에
google-http-client-jackson2-1.28.0.jar
google-api-client-1.28.0.jar
GoogleBigQueryJDBC42.jar 
추가


구글클라우드콘솔
https://console.cloud.google.com/bigquery?project=zeliter-1337

Bigquery에 연결하는 7가지 방법
https://hevodata.com/learn/bigquery-etl-tools/#b7

[ Airflow ] 초기셋팅

예제Airflow실행하기

 https://aldente0630.github.io/data-engineering/2018/06/17/developing-workflows-with-apache-airflow.html


도커로 Airflow 실행하기

https://jybaek.tistory.com/922


Airflow Example 지우는 법

airflow.cfg or docker-compose.yml

load_examples = False


기본 명령어 

[ 목록 ]

airflow dags list

airflow tasks list tutorial

airflow tasks list tutorial --tree


[ 테스트 ]

airflow dags test tutorial '2021-11-08'

airflow tasks test tutorial print_date 2015-06-01


[ 백필 ]

airflow dags backfill tutorial \

    --start-date 2015-06-01 \

    --end-date 2015-06-07



Cloudera Manager [3] - 클러스터 교체시 주의할 점

 

CDH 서버 스펙업시

HDFS시스템을 꺼놓고 ec2유형변경을 하면 

다시 시작시 hdfs가 인식을 못할 경우가 있다.


HDFS가 다시 잡을 수 있게 시스템을 킨 상태에서

EC2종료후 유형변경 작업을 한다.