IT/Network & OS 16

[AWS] S3 403 Forbidden

그대로 따라했는데 403 Forbidden이 났어요. 무엇이 문제인지 분석해 봅시다. Amazon S3에서 403 액세스 거부 오류 문제 해결 2. 버킷 정책 또는 IAM 정책이 사용자에게 필요한 Amazon S3 작업을 허용하는지 확인합니다. 예를 들어, 다음 버킷 정책은 s3:PutObjectAcl 작업을 포함하지 않습니다. IAM 사용자가 객체의 ACL(액세스 aws.amazon.com 버킷 및 객체 소유권 aws s3api list-buckets --query Owner.ID aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET 비교해보니 Owner.ID가 잘 들어있네요. 버킷 정책 또는 AWS Identity and Access Management(IAM) ..

IT/Network & OS 2022.04.10

[AWS] S3 SDK

Amplify Storage 튜토리얼을 따라 진행해봤는데 계속 오류(invalid url)가 나더군요. aws-exports.js 파일 _s3_bucket 설정도 , 각종 설정(e.g. cognito, S3 cors 등등)도 다 정상인데, 뭐랄까 어딘가 연결 고리가 빠져있는 것 같았습니다. Amplify도 새로 만들어보고 별 짓을 다 해봤지만 해결할 수가 없어서, 버그인가보다 하고 aws-sdk S3로 돌아가기로 했습니다. Amplify 계정을 활용하여 S3 V3 SDK를 사용해 봅시다. 브라우저 스크립트 시작하기 - AWS SDK for JavaScript 다른 자격 증명 풀이 없는 경우 Amazon Cognito 콘솔에서는 이 페이지를 건너뛰고 대신 다음 페이지를 엽니다. docs.aws.amazon..

IT/Network & OS 2022.04.09

[AWS] IoT + React App + Amplify

지난 편에서 AWS IoT에 대해 알아보고 Node.js와 Python 앱을 돌려봤는데요, 여기에 AWS Amplify 기반의 React App을 추가해 봅시다. AWS IoT는 X.509 인증서 기반으로 암호화하는데, React와 같은 웹앱의 경우에는 인증서 파일을 직접 접근할 수 없습니다. 예전에는 Javascript SDK 코드 안에 access key, secret access key를 넣었던 것 같은데, 이런 경우 프론트엔드 앱에 키가 하드코딩되어 유출될 수 있다는 우려 때문인지 SDK v3에서는 그런 API가 없어진 듯 합니다. 간단한 방법으로는 Node.js 백엔드 서버를 두고 백엔드 서버에서 인증서 파일을 읽어 AWS IoT 연결하고 프론트엔드와 별도의 웹소켓으로 연결하는 방법이 있겠으나,..

IT/Network & OS 2022.02.23

[AWS] IoT

튜토리얼 1편에서 EC2를 만들었을 때 MQTT broker를 설치해서 사용해봤는데요, 1편에서 만든 MQTT broker는 TLS가 적용되지 않은, 즉 HTTP에 해당하는 일반 웹소켓을 사용하므로 AWS Amplify로 호스팅된 HTTPS 사이트와 함께 사용할 때 Mixed Content 오류가 발생합니다. AWS IoT AWS IoT는 MQTT에 보안 및 AWS 서비스를 엮어 만든 서비스입니다. 당연히 HTTPS를 제공하기 위한 인증서 기반의 암호화 기능이 포함돼 있겠죠. 개념 및 원리는 아래 공식 홈페이지를 한 번 읽어보고 AWS IoT란 무엇입니까? - AWS IoT Core 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬..

IT/Network & OS 2022.02.21

[AWS] HTTPS & WSS

지난 편에서 AWS Amplify 백엔드까지 만들어 봤는데요, 마지막 연습문제에서 논의한 것처럼 가령 prisma를 사용한다던지 하는 이유로 API 서버를 EC2에서 express로 수행하는 경우, Mixed Contents 오류가 발생하는 것을 보았습니다. AWS Amplify로 호스팅된 앱 주소가 https로 시작, 즉 HTTPS(secure HTTP) 프로토콜인데, 앱 안에서 http://나 일반 웹소켓(ws://) 등을 연결하는 경우 기대하는 보안 수준(HTTPS)에 어긋나므로 허용하지 않겠다는 의미입니다. 보통 로그는 다음과 같습니다. APIs.ts:444 Mixed Content: The page at 'https://dev.aaaaaaaaaa.amplifyapp.com/' was loaded..

IT/Network & OS 2022.02.09

[AWS] Amplify

AWS에 웹앱을 호스팅하려면 어떻게 할까요? 지금까지 다룬 바로는, EC2에 node.js express 같은 웹 프레임워크 같은 것을 돌리고 elastic 웹앱을 호스팅했겠죠. React 앱이라면 어땠을까요? React 앱을 빌드(npm run build)해서 생성된 정적인 파일들을 통째로 EC2에 올리고 live-server 같은 것으로 호스팅했을 거에요. 이러한 과정은 빌드 파일들을 업로드하는 과정이 불편하기도 하고 javascript 소스 코드들이 그대로 노출될 수도 있어 찝찝한 기분이 듭니다. 게다가 로그인 권한 등을 적용, 관리하기도 어렵고 HTTPS 연결을 지원하려면 머리는 더 복잡해집니다. AWS Amplify는 적어도 호스팅을 해주는 아주 요긴한 서비스인데요, 빌드하고 자시고 할 것 없이..

IT/Network & OS 2022.02.09

[AWS] RDS MySQL Prisma

먼저 아래 가이드를 따라서 MySQL DB을 생성합니다. MySQL 데이터베이스를 생성하는 방법 – Amazon Web Services Network & Security Public accessibility: Yes를 선택합니다. 이렇게 하면 데이터베이스 인스턴스에 대한 IP 주소가 할당되므로 사용자 디바이스에서 데이터베이스에 직접 연결할 수 있습니다. Availability zon aws.amazon.com 생성이 끝났으면 endpoints를 기억해둡니다. 제대로 만들어졌는지 확인해 봅시다. 먼저 AWS EC2에 로그인하고 아래 명령으로 mysql에 접속해서 show databases; 명령 한 번 내려보세요. $mysql -h "endpoints" -u admin -p 이번에는 로컬 PC에서 접속해 ..

IT/Network & OS 2022.02.06

[AWS] EC2

EC2는 Amazon Elastic Compute Cloud의 약자로서 말 그대로 클라우드 PC 개념입니다. 아래 공식 튜토리얼을 따라 설치하면 되는데요, 가입 후 AWS Free Tier, 즉 무료로 사용해 볼 수 있습니다. 단, Free Tier인 경우에도 사용량을 초과하거나 과금이 되는 경우들이 있으므로 Billing에 알람을 걸어두거나 수시로 확인해보세요. 무엇보다 과금이 되는 경우를 숙지하고 대비해두면 되겠죠. 자습서: Amazon EC2 Linux 인스턴스 시작하기 - Amazon Elastic Compute Cloud 인스턴스를 종료하면 인스턴스가 실제로 삭제되므로 인스턴스를 종료한 후에는 인스턴스에 다시 연결할 수 없습니다. docs.aws.amazon.com EC2 설치는 튜토리얼만한 것..

IT/Network & OS 2022.02.05