SQS Lambda Trigger
업무에서 Standard 큐를 사용할 것이라 Standard 큐 기준으로 내용을 정리했다. FIFO 큐는 차이가 있는 부분이 있기 때문에 문서를 참고해야 한다. SQS Lambda Trigger란Lambda trigger로 SQS를 등록할 수 있다. Standard 큐와 FIFO 큐 모두 지원한다.Lambda는 큐를 poll하여 가져온 큐 메시지로 동기적으로 Lambda 함수를 실행한다. Lambda는 batch안의 메시지들을 읽고 각 batch당 한 번씩 Lambda 함수를 실행시킨다. 작업이 성공적으로 끝나면 Lambda는 자동으로 큐에서 메시지를 삭제한다. default로 Lambda는 한 번에 10개의 메시지를 poll하여 해당 batch를 함수로 보낸다. 적은 record로 함수가 실행되는 것을 피하기 위해서 batch window를 설정하여 최대 5분까지 메시지를 더 polling하여 record를 더 채울 수 있도록 대기시킬 수 있다. 함수를 실행하기 전에...
serverless 사용해보기
Serverless는 개발 프로세스를 단순화하기 위해 만들어졌다. AWS에서 Lambda를 작성한다면 각 Lambda마다 함수를 작성해야 하고 매번 환경 설정을 해야 한다. 그렇게 작성한 Lambda는 AWS 콘솔에서 다른 서비스와 연결시켜줘야 사용할 수 있다. 이런 과정을 간소화해주는 것이 Serverless Framework다. 간단한 Lambda 개발환경 구축 이외에도 serverless는 CI/CD 설정 및 배포 모니터링 기능을 제공한다. Serverless는 Node.js로 만들어진 오픈 소스 웹 프레임워크다. 2015년에 AWS Lambda를 개발하기 위해 만들어진 첫번째 프레임워크이며 현재는 Microsoft Azure의 Azure Functions, Google Cloud의 Google Cloud Functions등 다른 플랫폼도 지원한다. 플랫폼 선택에 따라 각 플랫폼에서 지원하는 다양한 언어(Node.js, Typescript, Python, Go,...
Skipping start: DynamoDB Local is not available for stage Issue
Serverless로 serverless-dynamodb-local 플러그인을 설치 후 dynamodb start 실행시 오류가 발생했다. 1Skipping start: DynamoDB Local is not available for stage: dev serverless.yml1234custom: dynamodb: stages: - dev 코드를 추가 후 다시 실행하면 해결된다.
CodeDeploy
CodeDeploy는 Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 ECS 서비스로 애플리케이션 배포를 자동화하는 배포 서비스이다. 기존 코드 변경 없이도 사용이 가능하다. 장점 신속한 새 기능 출시 애플리케이션 배포 시 가동 중지 방지 수동 배포와 관련된 다양한 위험 없이 애플리케이션 업데이트 중지 및 롤백 가능 동시 배포 가능 배포 자동화 배포 유형 실행 중 배포(인 플레이스 배포) : 애플리케이션이 중지되고 최신 버전이 설치되며 새 버전이 시작되고 유효성이 검사된다. EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 배포만 사용할 수 있다. 블루/그린 배포 : 새 버전으로 변경에 의한 중단을 최소화하면서 애플리케이션을 업데이트하는 데 사용된다.
AWS SAM init 에러
에러1sam bootstrap 명령어로 stage stack을 생성하던 중 에러가 발생했다. 1Error: Stack aws-sam-cli-managed-prod-pipeline-resources is missing Tags and/or Outputs information and therefore not in a healthy state (Current state:ROLLBACK_COMPLETE). Failing as the stack was likely not created by the AWS SAM CLI 해결법정해진 해결법은 없다. 구글링을 하면 aws credential이 잘못 설정된 문제라고 하기도 하고 cloud formation에서 생성이 실패한 스택을 직접 삭제 후 재배포 하면 된다는 글도 있었다. 나는 두 가지 방법으로는 해결되지 않았고 cloud formation 대시보드에서 스택 이벤트로 들어가 로그를 확인해서 해결했다. IAM 유저에 s3 권한이...
AWS SAM (Lambda Typescript로 작성하기)
SAM은 Serverless Application Model의 줄임말이다. 서버리스 애플리케이션을 빌드하는 데 사용할 수 있는 오픈 소스 프레임워크이다. 서버리스 애플리케이션이란 작업을 수행하는 데 함께 작동하는 Lambda 함수, 이벤트 소스 및 기타 리소스의 조합이다. 단순 Lambda 함수 그 이상으로, API, 데이터베이스, 이벤트 매핑 등의 추가 리소스를 포함할 수 있다. AWS SAM CLI를 사용해 정의된 서버리스 응용 프로그램을 빌드한다. 로컬에서 Lambda 함수를 호출하고, 단계별로 디버깅하고, 서버리스 애플리케이션을 패키징하는 등의 작업이 가능하다. CodeBuild, CodeDeploy 및 CodePipeline 등의 서비스를 심층적으로 통합하여 사용할 수 있다. 설치설치는 mac에서 homebrew로 진행했다. 12brew tap aws/tapbrew install aws-sam-cli 시간이 좀 걸린다. 1sam --version 명령어로 설치를...
Kinesis
Amazon Kineses를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 새로운 정보에 신속 대응할 수 있다. Amazon Kineses에서는 기계 학습, 분석 및 기타 애플리케이션을 위해 비디오, 오디오, 애플리케이션 로그 데이터와 같은 실시간 데이터를 수집할 수 있다. 중요 특징 실시간 : 실시간 스트리밍 데이터를 수집 및 처리할 수 있다. 완전관리형 : 사용자가 인프라를 관리할 필요가 없다. 확장성 : 매우 짧은 지연 시간으로 수많은 소스의 데이터를 처리할 수 있다. Kinesis Data Streams거대한 데이터 스트림을 실시간으로 다룰 수 있는 서비스이다. 실시간으로 데이터 지표를 확인하고 처리 및 분석 작업이 가능하다. 가장 보편적으로 사용하는 케이스는 실시간 데이터 집계가 있다. 데이터를 집어넣고 처리를 위해 불러오는데 걸리는 시간인 ‘put-to-get delay’는 1초 이하이다. 데이터가 들어오자마자 즉각적으로 사용할 수...
[React Native] dotenv 사용하기
dotenv를 쓰려고 추가하다가 생각지도 못하게 시간을 잡아먹어서 정리해놓으려고 한다. react-native-dotenv 모듈을 사용하면 된다. react-native-dotenvInstallationreact-native-dotenv 모듈을 다운받는다. 12yarn add react-native-dotenvyarn add @types/react-native-dotenv Configuration이 모듈은 babel plugin 이라 설정 파일에 추가해줘야 한다. babel.config.js 1234567891011121314module.exports = { presets: ["module:metro-react-native-babel-preset"], plugins: [ [ "module:react-native-dotenv", { moduleName:...
[React Native] screenshot 다루기
보호된 영상 컨텐츠의 스크린샷을 막기위해 리서치를 진행했다. 몇가지 방법을 찾았는데 결론부터 말하자면 IOS / Android 양쪽에서 완벽하게 캡처 동작을 막을수는 없다. 그래도 이벤트를 감지해 후처리를 해줄 수는 있다. react-native-screen-capture-secureScreenCaptureSecure Github에서 코드를 확인할 수 있다. 1234import ScreenCaptureSecure from "react-native-screen-capture-secure";ScreenCaptureSecure.enableSecure();ScreenCaptureSecure.disableSecure(); 간단하게 사용이 가능하다. enableSecure()를 실행하고 화면을 캡처하면 경고창이 뜬다. 모듈 파일로 들어가서 경고 메세지를 수정할 수도 있다. expo-screen-capture (android...
Github OAuth 로그인
Github OAuth 로그인깃허브에서 제공하는 API를 사용하면 쉽게 유저 정보를 불러와 사용할 수 있다. 공식 문서 : Authorizing OAuth Apps 위 공식문서를 참조하면 간단하게 구현할 수 있지만 한 번 정리만 해놓으려고 한다. Github OAuth Application 생성Github 계정 설정 > Developer settings > OAuth Apps메뉴로 들어오면 새로운 OAuth Apps을 생성할 수 있다.callback url은 나중에 써야하니 기억해놓자. 생성을 마치면 앱 설정 화면으로 넘어오는데, 여기서 API에 필요한 파라미터들(client_id, secret 등)을 발급받을 수 있다. 사용자의 Github 계정 정보 요청하기1GET https://github.com/login/oauth/authorize 파라미터 Name Description client_id Required Github OAuth 앱 생성시...