728x90

AWS Pycharm Toolkit을 활용하여 다음과 같은 작업을 수행할 수 있습니다.

  • 원하는 런타임에 즉시 배포 가능한 서버리스 애플리케이션을 생성합니다.
  • Lambda 런타임에서 단계별 디버깅으로 로컬에서 코드를 테스트 할 수 있습니다.
  • 원하는 AWS 리전에 애플리케이션을 배포합니다.
  • Amazon Simple Storage Service(S3), Amazon API Gateway 및 Amazon Simple Notification Service(SNS)를 활용하고 구성할 수 있습니다.

Pycharm Toolkit 설치

[File]-[Settings]-[Plugins] 에서 aws tool을 검색하여 AWS Toolkit을 설치하고, Pycharm을 재시작 합니다.

AWS Serverless Application Model(SAM) 설치

일부 기능은 AWS Serverless Application Model(SAM) CLI를 사용하기 때문에 AWS SAM을 설치합니다. https://aws.amazon.com/ko/serverless/sam/

※ 설치는 Linux 버전으로 설치합니다.

1. AWS SAMCLI 다운로드 받고 sam-installation/하위에 설치 파일 압축 해제

unzip aws-sam-cli-linux-x86_64.zip -d sam-installation

2. AWS SAM CLI를 설치

sudo ./sam-installation/install

3. 설치 결과 확인

sam --version

# Result
SAM CLI, version 1.27.2

업그레이드

--update 옵션을 다음과 같이 설치 명령에 추가합니다.

sudo ./sam-installation/install --update

설치삭제하기

1. which 명령으로 심볼릭 링크 확인

which sam

# 결과예시
/usr/local/bin/sam

2. symlink가 가리키는 디렉터리 확인

ls -l /usr/local/bin/sam

# 결과 예시
lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/sam -> /usr/local/aws-sam-cli/current/bin/sam

3. 심볼릭 링크 삭제

sudo rm /usr/local/bin/sam

4. 설치 디렉터리 삭제

sudo rm -rf /usr/local/aws-sam-cli

Reference

  1. https://aws.amazon.com/ko/blogs/korea/new-aws-toolkits-for-pycharm-intellij-preview-and-visual-studio-code-preview/
  2. https://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/serverless-sam-cli-install-linux.html
728x90
반응형
728x90

Amazon Simple Storage Service (Amazon S3)에서 버킷을 생성하고, 퍼블릭으로 설정하여 사용자가 사진을 볼 수 있도록 허용하는 방법입니다.

1. S3 버킷생성하기

[S3] 메뉴에 진입한 뒤, [버킷 만들기] 을 선택합니다.

버킷 이름은 Unique한 이름으로 명명하고, 리전을 선택합니다.

외부에서 접근할 수 있도록 [모든 퍼블릭 액세스 차단] 체크를 해제합니다.

퍼블릭 읽기 액세스 권한을 부여하기 위해 버킷 정책을 복사한 후 버킷 정책 편집기에 붙여 넣습니다. Resource는 생성된 버킷 ARN을 복사하여 붙여 넣습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::Bucket-Name/*"
            ]
        }
    ]
}

브라우저 스크립트가 Amazon S3 버킷에 액세스하려면 먼저CORS 구성를 다음과 같이 설정합니다.

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]

2. 이미지 업로드

이미지 하나를 업로드 해보고, 해당 링크를 오픈합니다. 링크 오픈 시 크롬 시크릿창으로 오픈하여 외부 접근이 가능한지 확인합니다.

링크 결과입니다.

Reference

  1. https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html
  2. https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/ManageCorsUsing.html
728x90
반응형

'AWS' 카테고리의 다른 글

AWS Cli 버전 2 설치  (0) 2021.09.03
AWS Pycharm Toolkit 설치하기  (0) 2021.08.08
[AWS] EC2 인스턴스 SSH 접속하기(2)  (0) 2021.08.03
[AWS] EC2 인스턴스 SSH 접속하기(1)  (0) 2021.08.03
AWS 람다(Lambda)로 Python함수 구현하기  (0) 2021.07.30
728x90

이전에 생성된 EC2 인스턴스에 SSH 클라이언트로 EC2 서버에 접속해 보겠습니다.

EC2 생성관련 내용은 링크를 참고하세요.

 

[AWS] EC2 인스턴스 SSH 접속하기(1)

SSH를 활용하여 EC2 인스턴스에 접속할 수 있는 방법을 알아보겠습니다. 먼저 접속할 EC2를 생성해보겠습니다. 1. EC2 인스턴스 생성하기 1.1 인스턴스 시작 EC2 대시보드에서 인스턴스시작 버튼을 클

jjnomad.tistory.com


2. EC2 연결하기

EC2 대시보드에서 연결하기를 클릭합니다.

아래와 같이 접속할 수 있는 가이드를 제공합니다.

다운로드 받은 pem파일은 리드 권한으로 최소화 하고 ssh 클라이언트 접속 합니다.

결과

위와 같이 했을 경우 아래와 같이 "Permissions 0555" 에러 발생할 수 있습니다.

The authenticity of host 'ec2-3-34-192-17.ap-northeast-2.compute.amazonaws.com (3.34.192.17)' can't be established.
ECDSA key fingerprint is SHA256:sBCH/6kroLB89QA4VBvyV3ntx8CvtV5wjPUvAQOE4hg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-3-34-192-17.ap-northeast-2.compute.amazonaws.com,3.34.192.17' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0555 for 'ec2-key-pair.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "ec2-key-pair.pem": bad permissions
ec2-user@ec2-3-34-192-17.ap-northeast-2.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

그럴경우, sudo 명령어로 실행하면 접속이 가능합니다.

sudo ssh -i "ec2-key-pair.pem" ec2-user@ec2-3-34-192-17.ap-northeast-2.compute.amazonaws.com

접속이 되었습니다. 😄

The authenticity of host 'ec2-3-34-192-17.ap-northeast-2.compute.amazonaws.com (3.34.192.17)' can't be established.
ECDSA key fingerprint is SHA256:sBCH/6kroLB89QA4VBvyV3ntx8CvtV5wjPUvAQOE4hg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-3-34-192-17.ap-northeast-2.compute.amazonaws.com,3.34.192.17' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-172-31-1-4 ~]$
728x90
반응형
728x90

SSH를 활용하여 EC2 인스턴스에 접속할 수 있는 방법을 알아보겠습니다.


먼저 접속할 EC2를 생성해보겠습니다.

1. EC2 인스턴스 생성하기

1.1 인스턴스 시작

EC2 대시보드에서 인스턴스시작 버튼을 클릭합니다.

1.2 AMI 선택

EC2에 가장 최적화된 Amazon Linux 2 AMI (HVM), SSD Volume Type을 선택합니다.

1.3 인스턴스 유형 선택

사용목적에 따라 자원은 선택가능합니다. 테스트를 위해 프리티어를 사용합니다.

1.4 인스턴스 세부 정보 구성

모두 default 값으로 두고 다음으로 넘어갑니다.

1.5 스토리지추가

스토리지도 기본값으로 선택하고 다음을 클릭합니다. EBS 스토리지는 30GB까지는 무료입니다.

(참고)https://aws.amazon.com/ko/ebs/pricing/

1.6 태그추가

리소스의 인식할 수 있는 Key-Value로 입력합니다.

  • 키 : Name, 값: TestServer

1.7 보안그룹 구성

새 보안 그룹을 생성하고 SSH, HTTP, HTTPS 프로토콜을 선택합니다.

SSH 는 소스에 내 IP를 입력 하고 저장하고 검토 및 시작을 클릭합니다.

1.8 인스턴스 시작 검토

[시작하기]를 클릭합니다.

1.9 키 페어 생성

EC2 서버에 접근하기 위한 새 키 페어 생성을 선택하고, 키페어를 다운로드 받습니다.

다운로드 받은 키페어는 EC2 서버에 접속하기 위한 개인키로 활용 됩니다.

2. 생성결과

2~3분 정도 후 생성 결과를 확인할 수 있습니다.

728x90
반응형
728x90

AWS 람다(Lambda)는 기본적인 라이브러리만 제공하고, 필요한 라이브러리를 import 하더라도 실행되지 않습니다. 따라서 머신러닝(Machine Learning)이나 크롤링 등을 개발하기 위해서는 추가적인 라이브러리 사용을 위해 필요한 라이브러리를 압축해서 올려서 사용해야 합니다.

웹 크롤링에 많이 사용되는 BeautifulSouprequests 라이브러리를 활용해서 API 서버를 구현해보겠습니다.

1. 디렉토리를 만들고 BeatifulSoup과 requests 라이브러리를 설치합니다.

설치된 파일은 아래 계층구조로 zip파일로 압축 해야 라이브러리를 인식할수 있습니다.

Python : python, python/lib/python3.7/site-packages(사이트 디렉토리)

mkdir python \
cd python

# 현재 폴더 위치에 설치하도록 -t 옵션을 붙입니다.
pip3 install bs4 -t .
ptp3 install requests -t .

# 상위 폴더에서 설치한 파일을 압축합니다.
cd ..
zip -r crawls.zip .

2. Lambda Layers 활용하여 공통으로 사용하는 라이브러리를 등록합니다.

Lambda Layers는 버전별로 수정이 불가능하고 만약 수정이 필요하다면 zip파일을 다시 올리고 새로운 리비전이 생성됩니다.

3. 함수 생성 및 Layer 추가

크롤링 함수를 생성합니다.

Layer에 라이브러리를 추가합니다.

4. 코드 입력

삼성전자의 PBR 값을 구하는 코드를 작성해보겠습니다.

import json
import requests
from bs4 import BeautifulSoup

def lambda_handler(event, context):
    # TODO implement
    fs_url = 'http://comp.fnguide.com/svo2/asp/SVD_Finance.asp?pGB=5&cID=&MenuYn=Y&ReportGB=D&NewMenuID=103&stkGb=701&gicode=A005930'
    fs_page = requests.get(fs_url)

    soup = BeautifulSoup(fs_page.text, "html.parser")

    corp_info_list = soup.find("div", {"id":"corp_group2"})

    print(corp_info_list.prettify())

    data = corp_info_list.select("dl")
    pbr = data[6].select("dd")[1].string

    json_data = {
        'pbr' : pbr
    }

    return {
        'statusCode': 200,
        'body' : json.dumps(json_data)
    }

작성한 코드를 테스트 하기 위한 이벤트를 구성합니다.

Lambda는 기본 128MB, 3초 Time-out입니다. 데이터 크롤링 위해 메모리와 Time-Out을 늘립니다.

5. 결과 확인

Reference

  1. https://beomi.github.io/2018/11/30/using-aws-lambda-layers-on-python3/
  2. https://medium.com/@rabter/aws-lambda-layer를-사용하는-방법-how-to-use-aws-lambda-layers-c206ba40d4cc
728x90
반응형
728x90

PIP란

위키백과
pip는 파이썬(python)으로 작성된 패키지 소프트웨어를 설치 · 관리하는 패키지 관리 시스템입니다. Python Package Index (PyPI)에서 많은 파이썬 패키지를 볼 수 있습니다.

1. python 3용 pip 버전을 설치합니다.

sudo apt install python3-pip

2. 설치된 버전을 확인 합니다.

pip --version
728x90
반응형
728x90

잘 사용하지 않아 까먹기 쉬운 우분투(Linux) 버전 명령어를 정리합니다.

방법 1.

cat /etc/issue

# Result
Ubuntu 20.04.2 LTS \n \l

방법 2

lsb_release -a

# Result
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal
728x90
반응형
728x90

자주 쓰는 것들로만 정리하면서, 계속 업데이트 할 예정입니다.


헤더(headers)

제목은 <h1> 부터 <h6> 까지 표현가능합니다.

# h1
## h2
### h3
#### h4
##### h5
###### h6

구분선

내용을 명시적으로 구분하고 싶을 때 사용합니다.

---

강조

인라인(inline) 강조

글을 쓰는 도중에 코드를 삽입 시 `(Grave) 를 사용하여 글 중간에 코드를 삽입할 수 있습니다.

`hello mark down`
**double asterisks**

결과

hello mark down
double asterisks

인용

> 인용글 입력

결과

인용글 입니다.

이미지 정렬하기

가운데 정렬하기

<img> 태그로 이미지를 첨부하고, 이미지 태그를 p태그로 감쌉니다.

<p align="center"><img src="image_src"></p>

오른쪽 정렬하기, 왼쪽 정렬하기

왼쪽 정렬은 기본값이며, 오른쪽 정렬은 img 태그에 align 속성을 줍니다.

<img src="image_src" align="right">

이모지(Emoji)

window10 : 윈도우키 + 마침표(.)
mac : Command + Control + 스페이스바

728x90
반응형
728x90

AWS Lambda를 활용하여 함수를 배포하는 방법을 알아보도록 하겠습니다.

Lambda에 대한 자세한 내용은 아래 링크를 참고하여 주시기 바랍니다.

 

클라우드 컴퓨팅 PaaS | Amazon Web Services

AWS Lambda는 서버 프로비저닝 또는 관리, 워크로드 인식 확장 로직 생성, 이벤트 통합 유지, 또는 런타임 관리 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. Lambda에서는 사실상 모든

aws.amazon.com

Task1 : Lambda 콘솔로 이동

AWS 콘솔에서 Alt+S 입력하고 Lambda를 입력하여 Lambda 서비스로 이동합니다.

Task2 : 함수생성하기

1. AWS Lambda 콘솔에서 [함수 생성]을 선택합니다.

생성한 Lambda 함수가 없는 경우에만 콘솔에 이 페이지가 표시됩니다. 함수를 이미 생성했다면 [Lambda > 함수] 페이지가 표시됩니다. 목록 페이지에서 [함수 생성]을 선택하여 [함수 생성] 페이지로 이동합니다.

2. [새로 작성]을 선택하고, 함수 이름과 런타임을 입력합니다. 여기서는 Python을 런타임 환경으로 진행합니다.

  • 함수이름 : HelloWorld
  • 런타임 : Python 3.8

권한 설정 및 기본, 고급 설정은 그대로 두고 [함수 생성]을 선택합니다.

함수가 생성되면 기본적으로 lambda_handler 함수가 생성됩니다. lambda는 Handler 함수를 통해서 'event'로 매개변수 값들이 들어오게 됩니다.

Task3. Lambda 함수 호출 및 결과 확인

테스트 이벤트를 사용하여 함수를 호출하여 이벤트 결과를 확인합니다. 아래 내용을 입력 후 [변경 사항 저장] [테스트]를 선택합니다.

  • 템플릿 : hello-world
  • 이름 : HelloWorldTest

실제 Python 코드의 실행된 후 Return 결과를 확인할 수 있습니다.

Task4. 함수 삭제

생성한 함수를 삭제합니다. [작업] 탭에서 [함수 삭제]를 선택합니다.


Reference

1. https://aws.amazon.com/ko/getting-started/hands-on/run-serverless-code/

 

728x90
반응형

+ Recent posts