728x90

깔끔한 데스크 공간을 마련하고, 외부 모니터를 활용하여 깔끔한 데스크 환경을 만들어보자.

1. 전원 설정

노트북 덮개를 덮어도 전원이 꺼지지 않도록 설정합니다.

  • 윈도우 설정 (단축키 : Win + i)에서 덮개를 닫을 때의 작동설정 메뉴로 이동합니다.
  • 덮개를 닫을 때 의 옵션을 [아무 것도 안 함] 설정으로 변경합니다.

2. 디스플레이 설정

노트북 모니터의 주 모니터 설정을 외부 디스플레이로 주 모니터를 변경합니다.

이상입니다. 😊

728x90
반응형

'사무(OA)' 카테고리의 다른 글

[MAC] Mac에서 docker 설치하기  (0) 2022.11.05
맥(Mac)에서 소스트리 출력하기  (0) 2022.07.21
[카카오 메일]Windows10 메일 연결  (0) 2021.08.13
728x90

파이썬에서 PDF 파일을 읽어와서 엑셀 파일로 변환하기 위해서는 몇 가지 라이브러리를 사용해야 합니다.
주로 PyPDF2 또는 pdfplumber를 사용하여 PDF 파일을 읽고, pandas를 사용하여 데이터를 가공하여 엑셀 파일로 저장할 수 있습니다.

pdfplumber 는 PDF 파일의 각 문자, 사각형, 선에 대한 상세한 정보를 제공하고 텍스트와 표를 쉽게 추출할 수 있는 라이브러리로, 데이터 분석 및 자동화 작업에 유용한 도구입니다.

https://github.com/jsvine/pdfplumber

1. 라이브러리 설치

먼저 pdfplumber 라이브러리를 설치합니다.(pip, anaconda, pipenv 환경 구성에 따라 설치 합니다.)

1. pip
pip install pdfplumber

2. anaconda
conda install -c conda-forge pdfplumber

3. pipenv
pipenv install pdfplumber

2. 테이블 추출하기

pdf 를 추출하기 위해 pdfplumber.open(file) 함수를 이용하여 pdf를 추출합니다.

import os  
import pdfplumber  
import pandas as pd  


file_path = os.getcwd()+"/contents/"  
pdf_name = "file.pdf"  
pdf_file_path = file_path + pdf_name  

# PDF 파일 열기  
pdf = pdfplumber.open(pdf_file_path)  

pages = pdf.pages  
print("총 페이지 수 : ", len(pages))  

tables = []  

# 1. 페이지에서 표 데이터 추출하기  
for each in pages:  
    table = each.extract_tables()  
    tables.extend(table)

3. 데이터 프레임으로 변환

# 2. 데이터 프레임으로 변환  
df = pd.DataFrame(tables[1:], columns=[tables[0]])  

# 3. 데이터프레임을 엑셀 파일로 저장  
excel_file_path = file_path + "file.xlsx"  
df.to_excel(excel_file_path, index=False, engine='openpyxl')

print(f'DataFrame이 {excel_file_path}에 저장 되었습니다.')

openpyxl 라이브러리가 설치되어 있지 않은 경우, 설치 하여 주세요.

728x90
반응형
728x90

개인투자용국채

2024년 상반기 개인 '직접 투자'가능한 국채 출시 

 

국채란? 쉽게말해 나라에 돈을 빌려주고 이자를 받는 상품.

 

가입 방법은?

개인투자용 국채는 전용계좌만 개설하면 누구나 판매대행기관 창구 방문이나 온라인 신청을 통해 청약,구매할 수 있습니다. (현재 판매대행기관 선정 후 시스템 구축을 거쳐 상반기 중 출시될 예정)

 

원리금 보장 상품 인데다가 가산금리분리과세 혜택까지 있는 상품

 

 

개인투자용국채<개요>

 

매입자격 : 전용계좌를 보유한 개인 (1인 1계좌)

한도 : 최소 10만원, 연간 한도 1인당 총 1억원

종목 : 10년물, 20년물

상환조건 : 만기일에 원금 및 이자 일괄 수령

적용금리 : 만기 보유 시 표면금리 + 가산금리(연복리 적용)

세제혜택: 매입액 총 2억원까지 이자소득 14%분리과세

 

( 1인당 연 1억 한도를 채워서 2년간 2억을 납입을 하면 20년 후에 이자만 2억가까이 나옵니다. 이게 종합과세로 잡히면 세금이 절반정도 나가지만 개인용 국채는 분리과세가 가능하기때문에 15.4%(지방세 포함) 만 내게됩니다. 절세를 고민하시는 분들에게 좋은 대책이 될거라 봅니다.)

 

표면금리는 전월 발행한 동일 연물 국고채 낙찰 금리를 적용합니다. 가령 1월 국고 10년 낙찰금리가 3.5%일 경우 2월 발행될 개인 투자용 국채 10년의 표면금리도 3.5%입니다. 가산금리는 시장상황 등을 고려해 매월 결정·공표될 예정입니다.

 

만약 월간 발행한 국채수요를 초과한다면 소액으로 청약한 대상에게 우선 배정합니다.

 

 

개인투자용 국채수익률 <10년물>

표면
금리
세전 세후
만기 연평균 만기 연평균
2.0% 22% 2.2% 19% 1.9%
2.5% 28% 2.8% 24% 2.4%
3.0% 34% 3.4% 29% 2.9%
3.5% 41% 4.1% 35% 3.5%
4.0% 48% 4.8% 41% 4.1%

 

개인투자용 국채 수익률<20년물>

표면금리 세전 세후
만기 연평균 만기 연평균
2.0% 49 2.4 41 2.1
2.5% 64 3.2 54 2.7
3.0% 81 4.0 68 3.4
3.5% 99 4.9 84 4.2
4.0% 119 6.0 101 5.9

이자소득 세율 14%(지방세 포함시 15.4%, 분리과세 한도 내) 가정

                                                           <자료: 기획재정부>

개인투자용국채발행 원금보장개인투자용국채발행 절세효과

 

중도 환매 가능할까?

 

10년, 20년동안 기다리면서 투자를 한다는 게 보통 쉬운 일은 아닙니다.

중도 환매를 하더라도 원금 손실은 없을까요?

--없습니다!

하지만, 중도 환매를 하면 표면금리의 단리 이자는 받을 수 있지만 분리과세혜택은 받을 수 없습니다.

 

재가입은 중도 환매 매입 시점 1년 후부터 가능합니다.

 

※ 개인투자용 국채 투자 예상 사례 ※

1인당 연 1억 한도를 채워서 2년간 2억을 납입을 하면 20년 후에 이자만 2억가까이 나온다. 이게 종합과세로 잡히면 세금이 절반정도 나가지만 개인용 국채는 분리과세가 가능하기때문에 15.4%만 내게된다. 절세를 고민하시는 분들에게 좋은 대책이 될거라 본다.   

 

①  노후대비 연금식 투자 : 40~59세에 20년 동안 달마다 20년물 50만원을 매입하면, 60세~79세 20년 동안 달마다 100만원 받을 수 있습니다. 

② 노후대비 일시 수령 방식 : 원금 손실 부담 없이 목돈의 안정적 투자를 위해 10년물 1억 원을 매입하면 10년 뒤 1억 4100만 원을 받을 수 있고, 20년 물 1억 원을 매입하면 20년 뒤 2억원을 수령할 수 있습니다. 

③  50세에 20년물 5000만 원을 일시에 매입하면 70세에 1억 원을 수령하며 만기 전 사망 땐 배우자,자녀 등에게 상속 가능하다.

④ 자녀 학자금 마련 : 자녀 나이 0세~4세에 해마다 20년물 500만 원을 매입하면 자녀 나이 20세~24세에 해마다 1000만 원을 받을 수 있습니다. 자녀 나이 10세 때 10년물 3000만 원을 일시 매입하면 자녀 나이 20세 될 때 4200만원을 수령할 수 있습니다. 

 

 

 

728x90
반응형
728x90

배당락(Ex-Dividend)

배당기준일을 지나 더이상 주식을 매수해도 배당금을 받을 권리가 없는 것을 말합니다.
배당락일은 배당기준일 다음날을 의미합니다. 따라서 배당락일에는 12월 결산법인의 주식을 매수해도 현금배당을 받을 수 없습니다.

보통 현금배당의 경우는 배당락으로 인한 주가의 하락이 없고, 주식배당의 경우에만 주가의 하락이 발생합니다.

728x90
반응형
728x90

 

올해부터 시작됐어요♥

 

고향사랑 기부제

https://ilovegohyang.go.kr/main.html 

 

고향사랑e음

고향사랑e음 시스템을 통해 기부희망 지자체에 열악한 지방재정 확충에 기여 하고, 대상지자체로부터 답례품을 제공받을수 있는 종합정보시스템

www.ilovegohyang.go.kr

 

고향사랑기부제는 부족한 지방 재정을 확충하고 지역경제를 활성화하기 위해 올해 1월부터 시행됐어요.

 

개인이 지방자치단체에 기부를 하면 10만원까지 전액 세액공제를 해 주고,

여기에 3만원의 답례품을 추가로 받을 수 있어요. 

 

23년 세액공제를 위한 기부는 23.12.31(일)23:30에 마감돼요. (기부금 결제가 완료되어야 정상적인 기부로 인정)

마감에 가까울수록 대기가 있어 기부가 어려울 수 있으니, 가금적 12.29(금)까지 기부를 해주세요. 

 

원하는 지역에 기부할 수 있어요.

내 주소지를 제외한 전국 어디든 선택할 수 있어요. 만약 사는 곳이 서울이라면 서울을 제외한 지자체를 골라야 해요.

(답례품이 마음에 드는 지역을 선택해도 되겠죠?^^)

 

*내가 기부한 지역의 답례품만 받을 수 있어요.

 

지역별 대표 답례품 현황

 

서울 서울사랑상품권

경기 쌀, 채소, 전통주, 고추장, 캠핑장 숙박권

부산 미역, 명란젓, 고등어, 다시마, 돼지국밥

경북 샤인머스캣, 참외, 홍시, 대게, 과메기

강원 커피, 와인, 건어물, 꽃차

전남 군고구마, 영광굴비, 템플스테이 이용권

 

*자세한 답례품은 고향사랑이음 홈페이지에서 확인할 수 있어요.

 

 

참여방법

1. 고향사랑e음 홈페이지 회원가입

2. 기부하기 클릭 → 원하는 지역 선택

3. 기부금의 30% 는 포인트로 적립

4. 답례품을 선택하고 포인트로 결제

 

★ 결정세액이 10만원 이상이라면 무조건 참여하는 게 이득★

728x90
반응형
728x90

히녹스 위치

나오는 아이템들

  • 왕가의 창
  • 왕가의 검

연관 퀘스트

  • WANTED 히녹스
728x90
반응형
728x90
 

최근 OKR 도입 사례가 많아지면서 OKR의 대표적인 성공 사례로 존 도어가 구글에서 확장 시킨 OKR 사례들을 알 수 있었는데 OKR 파워 한번 정리를 하면서 OKR을 이해 해보고자 한다.

OKR 이해

1. OKR은 본질을 담은 목표관리 방법이다.

OKR은 Objective + Key Result로 나눈다.

  • O는 구성원들에게 동기부여가 되는 가슴뛰는 목표여야 한다.
  • O는 구성원이 ‘달성해야 할 의무'가 아니라 ‘이루고 싶은 소망’으로 받아들여야 한다.
  • 가슴뛰는 목표를 이루기 위해서 달성해야 할 구체적인 목표들로 KR을 세운다.

2. OKR로 얻을 수 있는 조직의 힘

조직 전체의 목표와 팀의 목표가 Align 되려면 목표는 ‘오르내려야’ 한다. 오르내리는 과정에서 조직 전체의 기대와 팀의 도전 가운데 목표 합의가 이루어지게 된다.

2.1 집중: 우선순위를 갖고 일한다.

‘3개월의 OKR을 수립했다.’ 라는 뜻은 우리는 앞으로 3개월 동안 다른것은 못해도 이것 만큼은 달성 할 것이다.'라는 의미가 들어가 있다. 집중할 일의 우선순위를 정했다는 뜻을 내포한다.

집중할 일(KR)의 수준도 측정가능해야 한다는 것이 원칙이다. ('채용 많이하기'가 아니라 ‘채용을 3명하기’가 좋은 예)

만약 OKR 외의 일이 들어오게 된다면 OKR에 집중하기 위한 대안이 수립되어야 한다.

2.2 연결성: 조직이 인정하는 일을 한다.

조직 전체의 목표가 팀의 목표를 질적(정성), 양적(정량)으로 연결되면,

  • 팀의 목표달성이 조직의 목표달성으로 이루어질 수 있다.
  • 내가 하는일이 조직이 인정하는 일이라는 ‘안전함’ 속에서 일을할 수 있다.
  • 분기모다 조직과 팀 사이에 목표를 Align 하는 작업을 진행하기 때문에 목표에 대한 서로의 인식차이를 줄여 나갈 수 있다.

구글은 분기 마지막 4주를 치열하게 목표를 세우고, 합의하는데 사용하고 있다고 함.

2.3 책임: 함께 목표를 향해 간다!

각 팀의 OKR은 서로 독립적이어야 한다. 그래야 성과의 책임을 다른팀에 돌릴 수 없기 때문이다. 하지만 유기적으로 유기적으로 연결되어 있지 않은 조직은 없으므로 각팀의 OKR 진도가 투명하게 지속적으로 공유 되어야 한다. 책임은 투명성에 기반하고 있다.

2.4 피드백: 스프린트하고 피드백 한다.

피드백은 매주 실행계획을 피드백하고 다음 하준의 전략을 잘 수립하는 것이 OKR의 핵심이다. 피드백을 할 때는 CFRConversation-Feedback-Recognition 의 원칙을 지켜야 한다.

3. OKR을 쉽게 적용할 수 있는 조직문화

3.1 조직문화

3.1.1 사명과 비전 중심의 조직문화

구성원들이 조직 내 사명(존재 목적)과 비전(단기/중기/장기 목표)를 정확하게 인지 할 경우, OKR을 한방향으로 설정하는데 도움이 된다.

3.1.2 인정과 격려 문화

구성원들이 서로 인정과 격려하는 문화가 존재하는 경우 OKR 진척을 촉진할 수 있다.

3.2 리더십 및 개인역량

3.2.1 업무 권한 위임을 통한 주도성

OKR 방식으로 일하기 위해서는 구성원들이 자발적으로 일하는 환경을 만들어 주는 것이 필요하다. 결국, OKR을 수행하는 사람은 실무자이기에 실행자에게 주도권을 넘겨 줘야 한다.

3.2.2 피드백 역량

피드백 역량이란 구성원들이 진행하고 있는 업무에 대해서 스스로 피드백하고 행동을 발전시키는 것을 말한다.
수시로 피드백 하는 것이 일상화 되어 있다면 개인의 성장을 촉진할 뿐만 아니라 OKR의 성과도 달성할 수 있다.

3.3 조직 시스템

3.3.1 성과 중심의 Agile 프로세스

OKR의 목표가 한 부서만의 목표가 아니라 전사적 목표로 인지될 필요가 있다. 그런 기업의 특징은 성과 중심으로 프로젝트에 따라 역할을 주고 부서간의 협업이 원활하다는 것을 뜻한다.

3.3.2 실시간 지식 및 정보공유시스템

OKR의 중요 요소 중 하나가 투명한 정보 공유 이다. 모든 팀의 OKR이 실시간으로 투명하게 노출되고 필요한 정보들이 수시로 공유 될 때 OKR의 실행속도도 빨라질 수 있다.

4. OKR을 부스팅하는 포지션별 역할

경영자 또는 리더만 OKR을 열심히 낸다고 해서 OKR이 조직내에 정착되지는 않는다. OKR이 조직 내 체내화 되기 위해서는 조직 전체가 함께 OKR 도입에 관심을 가지고 힘을 써야 한다.

4.1 경영자의 역할

  • 방향성 제시와 공감 얻기
  • 필요한 자원과 교육 지원

4.2 임원의 역할

  • 전략적인 아이디어와 방향성 제시
  • 경영자와 실무자의 가교 역할
    • 실무자들이 각 팀의 OKR을 세울 때 팀 OKR을 전사 OKR에 Align 되도록 가교 역할을 해줘야 한다.
  • CFR 역량
    • 리더로써 조언과 격려의 커뮤니케이션 스킬이 요구된다.
      리더가 피드백과 격려를 진정성 있게 전달할 때 구성원들도 진심으로 받아들이고 분위기도 활력이 넘치게 된다.

4.2 팀장의 역할

  • OKR을 우선순위에 두고 집요하게 소통하기
    • OKR 코치인 존 도어(John Doerr)는 ‘목표를 달성하지 못하는 이유는 집요하게 소통하지 않았기 때문'이라고 말한다. 즉, 팀장은 OKR 책임자로써 목표에 대해 집요하게 소통하여야 한다.
  • 성공적인 OKR 미팅을 위한 퍼실레이팅 능력
    • OKR 미팅은 자발적인 의견 공유, 솔직한 피드백 그리고 코칭으로 이룽진다. 미팅을 진행하면서 팀장은 팀원들이 스스로 목표에 대해 고민하고 아이디어를 찾을 수 있도록 도와야 한다.

4.3 구성원의 역할

  • OKR 진척에 대한 실시간 소통
    • 투명한 정보 공유 는 OKR의 중요한 요소 중 하나로 구성원 모두가 진행하고 있는 OKR 과업에 대해 실시간으로 소통하려는 자세를 가져야 한다.
    • OKR 진척에 대해 정직하게 공개함으로써 더 빠르게 피드백과 아이디어를 주고 받을 수 있다.
  • 피드백 역량 및 성장 마인드 셋
    • 아이디어가 생략된 단순 To-Do 를 목표로 세우는 것이 아닌 피드백을 통해 지난 실행으로 배우고, 발견한 지식을 반영하여 발전되는 실행 계획을 세워야 한다.
    • 성장하고 배우려는 자세를 가진다면 OKR을 통해 개인의 실력향상을 할 수 있다.
  • 실행! 실행! 또 실행!
    • 실행을 할 때 가장 중요한 것은 조직화다. 조직화는 일, 사람, 기간으로 구성된다. 누가 할 것인지 그리고 언제까지 할 것인지를 정하고 실행계획에 따라 실행에 옮긴다.

경영자는 ‘공감대 형성’ 임원은 ‘방향성 제시’ 팀장은 ‘OKR 실행관리’ 구성원은 ‘실행' 이 중요하다.

OKR 작성 가이드

Objective는 가슴 뛰는 목표로 세운다.

  • Objective는 질적이고 가슴뛰며 도전적인 방향이다.
    • 팹시가 ‘코카콜라 끝장내자’라고 목표를 세운 것처럼 구호스러워도 좋다.
  • Objective는 의미와 방향을 담은 질적 목표에 해당된다.
    좋은 Objective 예시 나쁜 Objective 예시
    - 화장품 업계의 변종이 된다. - 매출 1,000억
    - 리오더 로켓 대응! - 출고 시스템 구축
    - 고객이 또다시 찾고 싶은 상품 만들기 - 거래처 수 1,000개

Objective를 잘세웠는지 점검하는 5가지 질문

  • 전사 목표를 달성하는 데 도움이 되는가?
  • 회사의 성장에 기여하는 목표인가?
  • 팀(자신)에게 영감을 주는 목표인가?
  • 기간이 정해져 있는 목표인가?
  • OKR이 3개월 후 기대하는 팀(자신)의 모습인가?

Key Result는 구체적으로 세운다.

  • Key Result는 측정할 수 있게 적어야 한다.
    • KR은 Objective를 달성했는지 확인하는 척도로 ‘우리가 어떻게 목표에 도달 했는지’를 알려 준다.
    • KR은 Objective를 설명할 수 있는 구체적이고 검증이 가능한 목표다.
      • 창조, 제거, 증가, 감소 관점에서 작성하거나 마일스토 방식으로 정해진 기간까지 완성하는 형태로 작성하면 된다.
좋은 Key Result 예시 나쁜 Key Result 예시
- 어플 다운로드 45% 증가 - 부진한 재고 관리하기
- 앱 로딩시간 2초에서 0.5초로 줄이기 - 바이어 관리하기
- 고객만족도 90점 이상 - 팀워크 강화
- 4분기 매출 50억 달성 - 출고 누락 없도록 서포트
- 신규거래처 20개 계약 체결 - 거래처와 관계를 강화하도록 매주 연락하기

Key Result를 잘세웠는지 점검하는 5가지 질문

  • 결과값이 구체적이고 명확한가?
  • 행동이 아닌 결과 중심으로 작성했는가?
  • 달성하기가 너무 쉽거나 불가능한 KR이 아닌 도전적인 KR로 설정했는가?
  • 다른 부서의 노력과 상관없이 독립적으로 측정이 가능한가?
  • KR을 달성하면 O가 달성되는가?

KR vs KPI

KPI가 사전적 예고 지표라면 KR은 결과적 최종적 지표를 의미한다.

(예)
Obective : ‘3개월동안 고객들로부터 사랑받는 설렁탕집’, ‘인근 상권에서 가장 유명한 설렁탕집 되기’

KR : 3개월간 누적 판매량, 프랜차이즈 신청하러 온 가맹점 신청자의 수, 최종적인 영업이익 등

KPI : 원가율, 대기시간, 고객만족도, 응답시간, 객단가 등

해당 자료는 OKR로 성과 내는 25가지 방법 OKR 파워 책을 토대로 작성되었습니다.

728x90
반응형
728x90

AWS Lambda에 코드를 업로드할때 numpy, pandas와 같이 C 또는 C++을 기반으로 한 라이브러리가 포함되어 있다면 Lambda는 이 라이브러리를 Import하지 못합니다.

⚠️ pandas 라이브러리 설치시에는 NumPy가 같이 설치됩니다.

Please note and check the following:

  * The Python version is: Python3.9 from "/var/lang/bin/python3.9"
  * The NumPy version is: "1.23.4"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy.core._multiarray_umath'

Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n    https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n  * The Python version is: Python3.9 from \"/var/lang/bin/python3.9\"\n  * The NumPy version is: \"1.23.4\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n",

따라서 Lambda Layer에 네이티브 코드 라이브러리가 포함되어 있는 경우 바이너리가 Amazon Linux와 호환되는 시스템을 사용하여 이러한 라이브러리를 컴파일하고 빌드해야 합니다.

pip를 활용하여 라이브러리를 mac에서 패키지를 다운로드 받아보면 다음과 같이 mac os기반의 패키지를 받는 것을 확인 할 수 있습니다.

모든 패키지가 위와같은 문제가 발생하는 것은 아니지만, 가능하면 OS 호환성을 고려하여 패키지를 설치하는 것이 좋습니다.

이러한 문제를 해결하기 위해 AWS EC2에서 Amazon Linux 인스턴스를 할용할 수 있지만, Docker를 활용하여 간단하게 Lambda Layer 패키지를 만들 수 있습니다.

1. Docker 설치하기

먼저 Docker 가 설치되어 있지 않다면, 아래 링크를 참고하여 Docker를 설치합니다.
Docker 설치하기

2. Amazone Linux2 컨테이너 실행하기

Amazone Linux2 실행합니다. docker images로 image가 없으면 해당 iamge를 pull 한 후 실행됩니다.

docker run -it amazonlinux:latest

-it 옵션은 컨테이너를 종료하지 않은채로 터미널 작업을 하기 위해서 사용합니다.

cat /etc/os-release를 입력하여 결과를 확인합니다.

#결과
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Python 3.9, 3.8 은 Amazon Linux 2 런타임 환경만을 지원합니다.
Lambda 런타임 확인하기 ➔

3. 컨테이너에 파이썬 설치하기

3.1 필수 라이브러리 설치

먼저 파이썬 설치를 위해 GCC 컴파일러와 같은 필수 개발라이브러리를 먼저 설치 합니다.

yum -y groupinstall "Development Tools"
yum install -y openssl-devel bzip2-devel libffi-devel
yum install -y wget

3.2 Python 3.9 설치하기

파이썬 3.9 다운로드 페이지로 이동하여 파이썬 3.9를 설치합니다.

cd /home
# Download python 3.9
wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz

# 압축풀기
tar xzf Python-3.9.15.tgz

# python 빌드 및 설치
cd Python-3.9.15
./configure --enable-optimizations
make altinstall

make altinstall 기본 파이썬 바이너리 파일위치 /usr/bin/python 교체를 방지하는 데 사용됩니다.

3.3 Python 버전 확인

설치된 Python 3.9는 /usr/local/bin 디렉토리에 설치됩니다. 기본 Python 버전을 덮어쓰지 않았으므로 설치된 버전 확인을 위해서 다음과 같이 실행해야 합니다.
파이썬이 제대로 설치되었는지 버전을 확인합니다.

python3.9 -V

# 결과
Python 3.9.15

3.4 파이썬 가상환경 생성하

애플리케이션 패키지가 포함시킬 수 있는 env라는 가상환경을 생성합하고 실행합니다.

python3.9 -m venv env
source env/bin/activate

# 결과
(env) bash-4.2#

Amazon Linux2 기반의 파이썬 3.9 개발환경 구성이 완료되었습니다. 이제 lambda layer 패키지를 생성하겠습니다.

4. AWS Lambda Layer 패키지 생성하기

requirement.txt를 갖고 전체 패키지 파일을 생성할 수 있지만 패키지 설치방식은 모두 동일 하므로 여기서는 Numpy 패키지를 가지고 Layer를 생성해보겠습니다.

4.1 Numpy 패키지 다운로드

pip로 numpy 패키지를 다운로드 하게 되면, 로컬 터미널 환경에 맞는 패키지를 다운로드 받게 됩니다. 따라서 Amazon Linux용으로 패키지를 다운로드 받아야만 종속성의 오류가 발생하지 않습니다.
https://pypi.org/project/numpy/#files 에서 파이썬3.9해당하는 Amazon Linux 버전의 .whl 파일을 다운로드 합니다.

# 패키지용 디렉토리로 이동
mkdir python && cd python

# NumPy 다운로드
wget https://files.pythonhosted.org/packages/92/49/127e40f3f468a9bbce1fe69e97d0f0db524621960e0adc51a977298eb49c/numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

다운로드 받은 파일은 압축을 풀고, 받은 파일은 삭제합니다.

# 압축 풀기
unzip numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

# .whl 파일 삭제
rm -rf numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

4.2 패키지 생성하기

상위 폴더로 이동하여 파이썬 패키지로 압축합니다.

zip -r python.zip python/

# 결과
adding: python/ (stored 0%)
adding: python/soupsieve/ (stored 0%)
adding: python/soupsieve/css_match.py (deflated 79%)
adding: python/soupsieve/css_parser.py (deflated 78%)
adding: python/soupsieve/py.typed (stored 0%)
adding: python/soupsieve/util.py (deflated 61%)
(중략)

파이썬 패키지로 압축 시에는 python/라이브러리로 생성되어져야 람다에서 라이브러리를 임포트 할 수 있습니다.

4.3 패키지 업로드

Docker 컨테이너에서 로컬로 패키지를 복사 한 후, Lambda Layer를 생성합니다.

# 컨테이너와 파일의 위치를 :로 구분하고 복사할 곳의 경로를 적습니다.
docker cp con:/root/data.txt /home/dst/

Layer 업로드는 Lambda Layer 공통라이브러리 등록하기 ➔ 에서 확인합니다.

5. Lambda 함수 생성

Lambda 함수에서 호출할 라이브러리에 대한 구성이 마쳤습니다.
이제 간단한 Numpy호출 예제를 활용하여 테스트 해보겠습니다.

  • Function Name : LambdaTestFuction
  • Runtime : Python 3.9
  • Architecture : x86_64

함수를 생성한 후 스크롤을 내려 Add a Layer 버튼을 클릭하고, 만들어둔 레이어를 추가합니다.

샘플 코드를 입력하고 Deploy 버튼을 클릭하고, Test 를 실행합니다.

import json
import numpy as np

def lambda_handler(event, context):

    a = np.arange(6)
    a2 = a[np.newaxis, :]

    # TODO implement
    return {
        'statusCode': 200,
        'body': a2.shape
    }

결과
아래의 return 결과가 나왔으면 정상적으로 임포트가 완료된 것입니다.

Response
{
  "statusCode": 200,
  "body": [
    1,
    6
  ]
}
(중략)

Reference

  1. https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/configuration-layers.html
  2. https://devbruce.github.io/aws/aws-10-lambda_layer/#os-%ED%98%B8%ED%99%98-%EC%97%90%EB%9F%AC
  3. https://sangchul.kr/368
  4. https://tecadmin.net/install-python-3-9-on-amazon-linux/
  5. https://sangchul.kr/368
  6. https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/amazon_linux_container_image.html
728x90
반응형
728x90

Homebrew로 Docker를 설치하는 방법을 알아보겠습니다.

Homebrew는 macOS용 패키지 관리자로 Mac용 소프트웨어를 설치할 수 있습니다. 편리하고 사용하기 쉽기 때문에 대부분의 Mac 사용자는 Homebrew로 패키지를 관리하고 있습니다.

Cask

Homebrew Cask는 Mac에 GUI 소프트웨어를 설치하기 위한 Homebrew 확장 패키지입니다. Mac의 Docker는 GUI 도구이므로 Homebrew Cask를 사용하여 설치해야 합니다.

1. Docker 설치하기

brew install --cask docker 로 Docker를 설치합니다.
설치를 완료한 후 application 에서 docker를 실행하면 설치가 완료 됩니다.

Application Screen

2. 버전확인

docker --version

# 결과
Docker version 20.10.20, build 9fdeb9c

docker-compose --version

# 결과
Docker Compose version v2.12.0

Reference

  1. https://formulae.brew.sh/cask/docker
  2. https://www.cprime.com/resources/blog/docker-for-mac-with-homebrew-a-step-by-step-tutorial/
  3. https://formulae.brew.sh/formula/docker
728x90
반응형

+ Recent posts