아래와 같은 코드로 DDB에 값을 넣으려고 했더니 InvalidParameterType: Expected params.Item['StartTime'].N to be a string 라면서 에러가 난다. async function putBook(bookId, title, password, startTime, endTime) { return await ddb.putItem({ TableName: BOOKS_TABLE_NAME, Item: { 'BookId': { S: bookId }, 'Title': { S: title }, 'Password': { S: password }, 'StartTime': { N: startTime }, ..

https://youtu.be/BnS6343GTkY 들으면서 요약하였음 2015년. 처음에는 모놀리틱 서비스 였다. 리뷰 시스템쪽에 장애가 나더라도 시스템 전체가 먹통되는 일이 생기곤 했다. 하루 주문수 10만건이 넘어가면서 마이크로서비스 도전을 시작했다. 참고로 루비는 레거시 DB의 총칭 주문수 증가 수치가 놀랍다. 처음에는 결제 서비스를 따로 떼어냈다. 결제 서비스 죽으면 끝나는게 아닌가? 아니다. 전화 주문도 가능하다. 따라서 시스템 전체가 멈추는 일은 없어야 한다. 주문중계 : 치킨 주문시 사장님들이 앱, 단말기, PC 등으로 주문 받을 수 있음. 이걸 중간에서 포워딩 해주는 서비스였음. Node JS로 구현했었지만 규모가 커지면서 JAVA로 다 바꿨다. 오후 5시 선착순 7천명에게 치킨 싸게 주..
AWS 보안을 더 강력하게 하는 방법에 무엇이 있을까? 여러가지 방법이 있겠지만, AWS Console에 접속하려는 사용자에게 MFA(Multi Factor Authentication) 사용을 강제하는 방법 역시 좋은 Practice중 하나가 되겠다. MFA 설정을 해놓지 않은 사용자가 AWS Console에서 아무 작업도 할 수 없도록 하려면 어떻게 해야 할까? 방법은 아래의 링크에서 확인 하자 https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html 기본적인 원리는 Force_MFA 라는 Policy를 User에게 줌으로써, MFA 설정이 안돼있으면 AWS 상에서 아무것도 못하도..
CDK Deploy를 위한 Minimum Policy는 무엇일까 당연히 Administrator Role 인줄 알았는데 아래의 Role도 일단 Deploy는 성공했다. { "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudformation:*" ], "Resource": "*", "Effect": "Allow" }, { "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } }, "Action": "*", "Resource": "*", "Effect": "Allow" }, { "Action": "s3:*", "Resource":..

AWS의 Amazon Pinpoint에는 Event를 저장하는 기능이 있다. Event Stream이라 하여, Amazon Pinpoint에서 발생하는 모든 로그를 AWS Kinesis로 보내는 기능인데, 나는 보통 Elasticsearch로 보내어 로그를 관리 한다. 이후 Kibana를 통해 BI를 구성하여 쓴다. Pinpoint EventStream 기능을 활성화 하여 Kinesis Firehose를 통해 Elasticsearch로 보내도록 구성해보자. Elasticsearch 도메인 생성 새 도메인 생성 버튼 누른 후 원하는 것을 선택한다. 나는 개발 및 테스트를 선택했다. 이후 도메인 이름을 적당히 지정 후 네트워크를 구성한다. 나는 도메인 이름을 pinpoint로 지정하였다. 나는 네트워크 구성..

AWS의 Amazon Pinpoint에 이벤트를 보내고, 이벤트 발생시 캠페인을 발송 하도록 만들어 보자. Custom Event 생성 { "ApplicationId": "80716e293edf4c43a3023f4ade22f26c", "EventsRequest": { "BatchItem": { "email-h": { "Endpoint": { "Address": "jakemraz100@gmail.com", "ChannelType": "EMAIL" }, "Events": { "KeyName": { "EventType": "_userauth.sign_up", "Timestamp": "2020-05-15T11:10:02Z" } } } } } } 위에서 "email-h"는 endpoint의 id이다. 위 이벤트를..
AWS Java SDK v2를 사용하여 AWS Elasticsearch에 쿼리하는 코드를 작성해보자 Gradle 추가 Gradle에 Elasticsearch 버전을 맞추어 아래를 추가한다. implementation 'org.elasticsearch.client:elasticsearch-rest-client:7.7.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'software.amazon.awssdk:auth' implementation 'software.amazon.awssdk:apache-client' 참고로 지금 내가 쓰는 es 버전은 7.4인데 sdk 버전은 7.7...
IaC를 통해 람다를 배포하는 여러가지 방법이 있다. CDK를 통해 cdk-cli를 통하여 배포하는 방법, SAM(Serverless Application Model)을 통하여 sam-cli를 통해 배포하는 방법. 또는 CloudFormation을 통해 직접 배포 코드를 작성 하는 방법. 지금까지 내가 알고 있던 세 방법의 공통점은, Lambda Handler를 S3 Bucket에 올린 후, Ref: 를 통해 가져오는 방식이라는 점이었다. 이런 방식에서는 CD(Continous Delivery)를 통해서는 어찌 배포 해야 하는가... 고민에 빠진 시점이 있었다. 최근 AWS CodeBuild의 IaC를 작성하다가.. BuildSpec의 내용을 CloudFormation의 yaml에 직접 작성하는 것을 보..
- Total
- 736,675
- Today
- 72
- Yesterday
- 230
- NDK
- 드라이버
- Python
- Quiz
- 음악
- API
- winapi
- 안드로이드
- linux
- kering
- C
- Visual C++
- Cloud
- C++
- jni강좌
- Troubleshooting
- MFC
- db
- algorithm
- android
- jni
- gcc
- database
- 리눅스
- AWS
- java
- driver
- it
- 프로그래밍
- source