728x90

요즘 제가 하고 있는 것이 바로 Google에서 진행하는 Google Study Jam인데요,

구글에서 교육 콘텐츠를 제공해주는 프로그램입니다.

GSJ는 기본적으로 2개의 코스로 진행합니다.

1. Coursera  - Machine Learning labs

2. Qiwklabs  - Cloud Labs

 

 

간단히 설명해서,

구글에서 제공하는 google console을 이용해서 머신러닝 강의를 듣고 실습할 수 있게 제공해주는 프로그램입니다.

 

이미 구글 스터디 잼은 2019년도 상반기부터 쭉 진행을 해왔었고,

저는 3,4월에 머신러닝 중급, 클라우든 중급을 수료했습니다. 

 

이번 5,6월은 머신러닝 심화, 클라우드 심화반 진행 중이고, 저는 스터디잼 심화반을 수료하는 중입니다.

 

오늘 포스팅할 것은 2개 코스 중 Qiwklabs 심화 파트인 Machine Learning APIs입니다.

 

스터디 잼 심화반 과정을 전부 따라 하진 않을 겁니다. 그저 제가 공부했던 것을 다시 정리하는 느낌으로 api가 무엇인지, 

구글 스터디 잼은 어떤 식으로 진행이 되는지 살짝 엮어서 쓸 예정입니다.

 

스터디 잼이 지급했던 가이드라인과 같을 수도, 다를 수도 있을 것 같네요.

 

 

 

API란?

- API (Application Programming Interface)

- 개발자가 컴퓨팅 리소스 및 data access 할 수 있게 해주는 Software Program

- 특정 규칙 및 방법을 준수해서 요청 및 응답을 명확하게 전달해 줌

 

- API의 기능은 개발자의 효율성을 크게 높여줌

- 모든 단일 프로그램, Method, Data Set 등을 처음부터 빌드하는 것보다 api를 활용하는 것이 훨씬 쉬움

- API를 사용하기 위해서 api의 내부 동작이나 복잡성을 이해할 필요가 없음(추상화 원칙)

 

- 개발자를 위해 만들어짐

- GUI 제공하지 않음

-google에서는 APIs Explorer라는 새로운 tool을 출시함

(이 tool을 사용 시 다양한 Google API를 대화 식으로 탐색할 수 있음)

 

 

Google의 API는?

 

- GCP(Google Cloud Platform)에서는 다양한 분야와 그 분야에 적용할 수 있는 다양한 API를 제공

- API는 Web development, Machine Learning, Data sceince, systems management work flow 등에서 사용

- QiwkLabs의 실습 환경에서 GCP project 및 API 사용 가능

 

 

API의 Architecture?

-API는 프로그램이 서로 통신할 수 있게 해주는 일련의 method

- 효과적으로 의사소통하기 위해서는 프로그램이 데이터 전송 및 해석을 제어하는 명확할 규약(protocol)을 준수해야 함

 

 <Client - Server model>

- 웹 기반의 API가 정보를 교환하기 위해 사용하는 기본 구조

 

Client: 일부 컴퓨팅 자원 또는 데이터에 요청하는 컴퓨팅 장치

          client의 요청은 합의된 프로토콜로 형식화해야 함

 

Server: 서버에는 데이터 및 컴퓨팅 리소스가 저장

          client의 요청을 해석하고 이해

 

 

RESTFul APIs란?

- REST (Representational State Transfer)

- HTTP 프로토콜, Request method, End Point를 사용하는 API

- 웹 기반 통신의 표준을 규정하는 architecture style

- REST는 API에서 가장 많이 사용되는 framework

 

RESTFul System

  • resource: 데이터 저장소에 저장
  • client: 서버가 특정 작업을 수행한다는 요청을 보냄
  • server: 작업을 수행하고 지정된 리소스의 표현 방식으로 응답을 보냄

RESTFul API's model

  • 개별 주소 지정 가능한 자원의 모음
  • 자원 및 방법은 api의 명사 및 동상
  • http  프로토콜 사용 시 리소스 이름이 자연스럽게 url에 매핑
  • 메서드가 자연스럽게 http 메서드에 매핑

- Header: HTTP request자체를 자세히 설명하는 매개 변수

- Body: client가 server에게 보내려고 하는 데이터

(Body는 Json or XML 형식 언어로 작성)

 

 

 

API의 데이터 형식(JSON)

- RESTFul API는 HTTP Request method 본무에 보관된 데이터 파일 형식으로 xml, json을 사용

 

JSON?

- JavaScript Object Notation

- 가볍고, 읽기 쉽고, 구문 분석이 빠름

- xml보다 많이 사용

- key - values 쌍으로 구성

- key는 string 유형

{
	"Name": "Judy",
	"Hometown": "Los Angeles, CA",
	"Age": 26
}

Authentication & Authorization

 

- Authentication(인증): client의 신원을 결정하는 프로세스를 나타냄

                            : 본인을 식별

- Authorization(권한 부여): 인증된 client가 자원에 대한 사용 권한을 결정하는 프로세스를 나타냄

                                  : 사용자가 수행할 수 있는 작업을 결정

 

 

Google API에서 사용하는 인증, 권한 부여 서비스

API key Service Accounts OAuth

-암호화된 문자열 형태로 제공하는 보안 토큰

- 생성 및 사용이 빠름

- 공용 데이터, 매소드 사용 시 신속한 실행 가능

- in GCP

    = api호출을 호출하는 프로젝트를 식별

    = 사용정보를 해당 프로젝트와 연관

    = api에 의해 액세스 허용

    = api에 의해 미허가 프로젝트 호출 거부

- application 계정에 개인키 제공

- 개별 최종 사용자의 가상 머신에 속함

- 구글 계정의 특별한 유형

- google cloud 기능 제공

- Goggle App Engine,

  Google Compute Engine,

  Google Kubernetes Engine

  에서 기본 서비스 계정 사용

- 해당 형식의 API key와 유사

- 더 강력한 보안

- 사용자 계정, ID에 연결 가능

- 사용자 데이터에 액세스 하는 수단 제공

- API key: 모든 API 기능에 액세스

- OAuth Client ID: 모든 범위 허용

 

 

 

 

 

 

 

 

 

 

 

<실습> cloud Storage JSON/ REST API를 사용해서 파일 업로드하기

 

 

 

step 1. 퀵랩에서 start lab을 눌러줍니다.

 

 

step 2. google console을 로그인을 해줍니다.

 

 로그인시 username , password 사용

 

 

 

 

step 3. 메인 메뉴 -> API & SERVICE -> library에서 Fitness API 선택

Enabled 버튼 눌러서 활성화 시킴

 

 

 

 

step 4. 같은 방법으로 Google Cloud Storage JSON API 활성화 

 

 

step 5. 메인메뉴 -> Storage에서 Create new bucket

step 2의 project ID로 버킷 이름 설정해줌

 

 

step 6. google cloud shell을 사용

start cloud shell 버튼 누르기

 

 

 

step 7. console에서 bucket을 만들기 위해 필요한 값 정해주기

 

 

step 7-1. 다음 명령어 실행해서 호출된 파일 작성

nano values.json

 

step 7-2. nano 텍스트 편집기를 이용해 다음 명령어를 입력

{  "name": "YOUR_BUCKET_NAME",  // 미리 설정해준 bucket 이름을 붙여 넣기
   "location": "us",
   "storageClass": "multi_regional"
   }

 

 

 

 

step 8. 인증 토큰 사용하기

 

step 8-1. OAuth 토큰 생성

https://developers.google.com/oauthplayground

 

OAuth 2.0 Playground

Request Body Manual entry Enter the data that will be added to the body of the request: File You may choose to send a file as part of the request. When both a file and manual content are provided both will be sent using a multipart request. You may send fi

developers.google.com

체크 표시된 것을 찾아서 누르고 Authorize APIs 버튼 클릭

 

 

step 8-2. 인증 로그인

step 2의 username, password를 사용해서 로그인

 

 

step 8-3.  새 인증 토큰 받기

Exchange authorization code for tokens 버튼 클릭하여 새 인증 토큰 받기

 

 

step 8-4. access_token 확인

새 인증 토큰을 복사

 

 

 

step 9. 컴퓨터에 원하는 사진 저장하기

demo-image.png로 이름 변경

 

 

 

step 10. Google cloud shell로 돌아와서 명령어 입력

 

 

step 10-1. 이미지 파일의 경로 가져오기

realpath demo-image.png

이런 형식이 출력되어야 함

 

step 10-2. 파일 경로를 환경 변수로 설정

export OBJECT= DEMO_IMAGE_PATH // 이미지 파일의 실제 주소를 입력함

 

step 10-3. 버킷 이름을 환경 변수로 설정

export BUCKET_NAME= YOUR_BUCKET // project ID 입력

 

step 10-4. OAuth2  토큰을 환경 변수로 설정

export OAUTH2_TOKEN= YOUR_TOKEN // 생성한 access token을 입력

 

 step 10-5. Cloud Storage bucket을 생성 

curl -X POST --data-binary @$OBJECT \
    -H "Authorization: Bearer $OAUTH2_TOKEN" \
    -H "Content-Type: image/png" \
    "https://www.googleapis.com/upload/storage/v1/b/$BUCKET_NAME/o?uploadType=media&name=demo-image"

비슷한 형식의 출력이 나와야 함

 

 

step 11. 메인 메뉴-> storage ->browser -> bucket name 선택하여 bucket에 추가된 이미지 확인

이미지 확인

 

+ Recent posts