일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- node
- node.js
- 감사일기
- swift
- angular4
- Route53
- TypeScript
- beanstalk
- php
- nextjs
- AWS
- 웹뷰
- angular
- 페이스북
- fanzeel
- NeXT
- hybrid
- 안드로이드
- react
- Elastic Beanstalk
- Android
- https
- S3
- ios
- 네이티브
- JavaScript
- 도메인
- cors
- 알려줌
- 카카오톡
- Today
- Total
목록개발 일지/AWS (16)
쪼렙 as! 풀스택
AWS - Elastic Beanstalk 에서 Node.js 환경을 선택하면,기본적으로 Nginx가 프록시서버로 사용하게 설정되어있다. 홈페이지에 필요한 간단한 아이콘, favicon 등등은 그냥 public/assets/ 폴더를 만들어서 사용하고 있었는데, 그 static file 들만이라도 Nginx 를 통해서 처리하게 해주면, Node 환경이 한결 쾌적해 질 수 있겠다. 1. Node에서 static 파일을 사용할 수 있게 설정되어있는 server.js 파일을, 개발모드에서만 사용가능하도록 수정했다. /server.jsconst express = require('express')const dev = process.env.NODE_ENV !== 'production'const server = exp..
빈스토크 - 로드밸런서를 쓰고 있는경우, http 인지 https 인지 구분하는 방법이 약간 특별해진다. 그 특별한 내용은 여기 참조...Elastic Beanstalk 에서 HTTPS 로 Redirect 시키려 한 삽질들... 이번엔 Node - Express 서버에서 리다이렉트를 시켜본다. const server = express() server.use(function(req, res, next) { const xForwrded = req.get('X-Forwarded-Proto') //로드밸런서경우, X-Forwarded-Proto 로, 어떤 요청으로 왔는지 알 수 있다. if(!!xForwrded && xForwrded !== 'https') { res.redirect('https://' + re..
React + next.js 로 정말 신나게 코딩하면서, 프로젝트의 마무리 단계에 와있었다. 그동안은, 당연하게 localhost:3000 로 테스트를 하고 있었고, 서버 테스트는, next 를 만든 zeit 사의 'now' 서비스를 사용했었다. zeit / now 서비스는 정말 감동적으로 좋은 서비스였다.그냥 터미널에다 'now' 라고 3글자만 치면, 자동으로 프로젝트를 서버에 올리고, 자동으로 빌드되고, 곧장 실서버 상황을 볼 수 있었기 때문이다. 그러다가, 이제 정말 product 로 배포해야할 때가 다가 왔고, 그래서 진짜 실서버 테스트를 하려고, AWS - Elastic Beanstalk 에 올려보려고 했다.나는 이제껏, BackEnd 는 다 PHP 로 개발 해 오다가, 이번에 React 로 프..
CDN 서비스인 CloudFront 를 사용하면, 세계에 퍼져있는 캐시서버에 콘텐츠들이 복사되어 있고, 사용자와 가까운 엣지포엔트에 있는 콘텐츠를 열어보게 되어있다. 그래서 간혹 Origin 서버에서 리소스를 변경할 일들이 있는데, 캐시서버에는 예전 콘텐츠가 그대로 남아있어, 사용자가 예전 리소스에 접근하게 되는 경우들이 생긴다. 이런일이 생각보다 자주있다!! 물론, AWS 에서 캐시 콘트롤 정책을 설정해 둘 수 있지만,급하게 지금 당장, Origin 서버에 있는 콘텐츠를 변경하고, 캐시서버에도 당장 갱신해야 할일들이 많이 있다. 이때를 위해서 AWS 에서는 캐시서버에 있는 리소스들을 한번에 갱신할 수 있는 방법을 제공한다. 1. AWS - CloudFront 선택 - 갱신하려는 Distribution ..
준비물1 - 앞서 언급한 사용자의 AccessKey 와 시크릿 키가 필요합니다.준비물2 - PHP용 SDK (http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354Colored by Color Scriptercs 업로드나 삭제후 넘어오는 $result 에 따라서 핸들링 해주면 되겠습니다.
서버단(PHP)에서 AWS SDK 를 이용해, S3 에 파일을 올리거나 삭제할 수 있도록 하겠습니다. AWS 에서 SDK 에 사용할 계정을 생성하고 (Access Key) 를 발급받아야 합니다. 이 Access Key 를 이용해서 AWS 의 서비스를 제어할 수 있는데, 그 계정에 너무 큰 권한을 줘버리면 보안에 취약할 수 있으므로, 꼭 필요한 권한만을 제한적으로 발급하여 계정 Access Key를 발급받도록 합시다. 여기에서는, 특별히 S3 - (방금만든) 버킷하나 - Get Object, Put Object, Delete Object 요렇게 딱 3개만 할 수 있는 권한이 있는 계정을 만들고 Access Key를 발급받도록 하겠습니다. 1. 권한설정이 된 사용자(User)를 만들도록 하겠습니다. AWS ..
S3 버킷에 html 파일을 올려서 Static 웹사이트로 만들 수 도 있습니다. 이게 참 별거 아닌거같은데, 요새같이 SPA 형태로 만드는 웹앱에서는 서버리스로 웹앱을 구성할 수 도 있단 얘기입니다!! 필자는 Angular로 웹앱을 만들어 본 적이 있는데, Angular 는 일단 index.html 파일과, 관련된 자바스크립트만 다운로드 되면, 클라이언트단에서 렌더링하기 때문에, 이 S3 Static 웹사이트 기능을 이용해서 서버리스 웹앱을 만들 수 있게 되는것입니다. (물론 데이터 통신이 필요한경우 API 서버가 필요하긴 합니다만 기본적으로 서버리스 웹앱이 가능해집니다.) 뭐, 서버리스 웹앱 까지는 아니고, 그냥 파일 주소를 내 도메인으로 사용하려는 용도로도 사용가능하겠습니다. 지금처럼 https:/..
지난 포스트에 이어서, 해당 버킷에 올라가는 모든 오브젝트는 웹으로 접근이 가능하도록 퍼미션을 조정해보도록 하겠습니다. 1. 버킷에 들어가서 'Permissions' 탭을 선택. 2. Bucket Policy 를 선택하면, 빈공간에 JSON 형식으로 Policy 를 직접 입력하게 되어있습니다. 뭐라고 써야 할지 모르므로 우리는 Policy Generator 를 클릭합니다. 그러면 Generator 가 새 창으로 뜰겁니다. 3. Policy 타입 = S3 Bucket Policy, Effect = Allow, Principal = * Actions 는 GetObject 하나만 선택합니다. 모든사람에게 접근가능한 권한은 읽을 수만 있게 해줘야겠죠 4. ARN 을 잘 입력해야합니다.arn:aws:s3:::/*..
서비스를 운영하다보면, 파일을 저장해야할 일이 많다. 예를 들어 사용자가 올리는 사진을 저장해야 하는 서비스를 운영하고 있다면, 그 사진 파일을 운영하는 서버에 직접 저장해두는 방법도 있겠지만, 서버의 블록스토리지는 비싸다! 게다가 웹에서 이미지를 호출한다고 했을 때 S3 스토리지에서 파일을 관리한다면, 파일 로드 & 출력을 서버에서 직접 담당하지 않기 때문에, 서버 리소스를 절약하고 트래픽 요금까지도 절감할 수 있겠다. 특별히 블록스토리지를 사용해야하는 경우가 아니라면, 여러모로 S3 스토리지를 이용하는것이 좋으리라 생각된다. * 버킷 - S3에서 생성하는 저장소 단위. xxx.xxxxx.com 과같이 도메인 이름 형태로 만들어야 한다.* 오브젝트 - 파일 한개 + 그 파일에 대한 메타데이터 이다. 가..
Elastic Beanstalk (EB) 를 세팅할 때 Environment Type 은, Single Instance 가 아니고, Auto Scaling, Load Balancing 을 이용하도록 선택한다. 이러는 이유는 특별한 게 없고, ACM을 이용해서 발급받은 HTTPS 인증서는 Load Balancer 에만 적용이 가능하기 때문이다. 로드밸런서 에 ACM을 이용해서 HTTPS 인증서를 적용한다고 해도, 실제 EC2와 LoadBalancer 가 통시는하는 포트는 80포트 (HTTP) 통신이다. 이게 무슨소리? ㅡ,.ㅡ;;; 아래 그림을 보면 쉽게 이해될 것이다. [ 출처 : https://bitbucket.org/osrf/cloudsim/wiki/Deployment ] 로드밸런서를 통해 HTTPS..