분류 전체보기 85

Prameter Store를 이용해 CDK stack에서 하드코드 없애기

하드코딩이라 함은 소스코드 내부에 밖으로 새어 나가서는 안되는 정보(e.g. accesskey, secretaccesskey, host, wdbhook url 등)가 적혀있는 것을 말한다. 로컬에서 개발하는 단계에는 그런 정보가 있으나 없으나 상관은 없겠다만 commit & push를 해 버리면 위험하다. git이나 github 레포지토리에 그 이력이 남기 때문에 악의를 가진 사람들이 작정하고 알아내려 한다면 알아낼 수 있을거고 그런 위험에 대비하기 위해서는 commit해버린 정보를 파기하고 그 정보와 관련된 모든 서비스 혹은 프로그램, 소프트웨어 등을 새로 정보설정해야하는 큰일이 벌어질 것이다. 하지만 아무리 머리 속으로 생각해도 간혹 이런 중요한 방침을 잊어버릴 일도 있지 않겠는가..(내가 방금 저 ..

AWS 노트 2020.04.17

AWS CDK가 Argument of type 'Function' is not assignable to parameter of type 'IFunction'. 에러를 뿜을 때

문제발생 AWS CDK stack안에 적었던 Lambda함수와 이를 반복 실행시키는 규칙 부분에서 Argument of type 'Function' is not assignable to parameter of type 'IFunction'.에러가 나기 시작했다. 에러 메세지는 아래와 같으며 구글에 찾아봐도 '아무 문제 없어야 하는 코드인데 왜 그러지??'라는 대답으로 끝나는 것이 대부분이었다. Argument of type 'Function' is not assignable to parameter of type 'IFunction'. Types of property 'role' are incompatible. Type ..

AWS 노트 2020.04.17

DataWarehouse와 DateLake의 차이

데이터를 격납하는 방식 데이터웨어하우스도 데이터레이크도 모든 데이터를 저장할 수 있음 차이점1: 데이터웨어하우스는 구조적 데이터를 격납하고 데이터레이크는 비구조적 데이터와 구조적 데이터 모두 격납 가능하다 차이점2: 데이터웨어하우스는 raw-data를 격납하기 위해서 ELT(추출->변형->적재) 프로세스를 거쳐 통일된 형태의 데이터로 격납하지만 데이터레이크는 바로 raw-data를 격납한다 데이터를 분석하는 방식 데이터레이크는 raw-data그대로 저장하기 때문에 분석할 때 필요한 형태로 가공해 분석 툴로 데이터를 보낸다 그 데이터만을 위한(ad-hoc) 분석이 가능 대신 카탈로그라는 기능이 필요함: 어떤 데이터가 어디에 저장이 되어 있는지 알 수 있도록 데이터웨어하우스는 그 자체로 분석까지 가능하다 A..

AWS 노트 2020.04.15

외부 서비스의 데이터를 python으로 slack에 통지하기

slacker 설치하기 먼저 slacker를 설치한다 $ python3 -m pip install slackerslacker의 공식 github 링크를 타고 들어가면 예시들을 볼 수 있다. slack에서 token과 webhook url 가져오기 token 취득 token은 코드에서 slack을 초기화할 때 쓰인다. from slacker import Slacker slack = Slacker('your_token')token에는 4가지 종류가 있다. 1. bot: 어플리케이션이 독립적으로 작동하며 user token과 동일하게 개별 범위를 설정할 수 있음 2. user: 사용자를 대신해 사용자가 어플리케이션에 부여하는 OAuth 범위에 따라 작동함 3. workspace: 워크스페이스 어..

파이썬3 노트 2020.04.14

aws-cdk가 Argument of type 'this' is not assignable to parameter of type 'Construct'. 에러를 뿜을 때

Lambda함수를 Redshift에 접근할 수 있게 하기 위해서는 Redshift 클라스터가 있는 VPC 정보를 CDK stack에 명시해 주어야 한다. 그래서 아래 코드를 쓰기 위해 const vpcExample = ec2.Vpc.fromVpcAttributes(this, "vpcExample", { vpcId: "[vpc_id]", availabilityZones: ["[region]"], privateSubnetIds: [ "[subnet_name]", "[subnet_name]" ] }); @aws-cdk/aws-ec2를 새로 설치했더니 그 다음부터 Argument of type 'this' is not assignable to parameter of type 'Construct'라면서 에러를 뿜..

AWS 노트 2020.04.10

AWS 특정 IAM 역할로 S3 버킷에 대한 접근을 제한하기 (적당히 해석)

원문: How to Restrict Amazon S3 Bucket Access to a Specific IAM Role 나는 AWS의 클라우드 서포트 엔지니어인데 고객들이 종종 어떻게 아마존 S3 버킷에 대한 접근을 특정 AWS IAM 역할로 제한하느냐 묻곤 한다. 일반적으로 그들은 IAM 사용자와 같은 방식으로 이것을 시도한다: 접근 승인을 하고 싶지 않은 Principals(정책에서 자원에 대한 접근이 호용되거나 거부되는 보안 주체를 지정하는 요소)를 모두 거부(Deny)한다. 이 방식의 문제점은 버킷 정책 유지가 요구된다는 점이다. 만약 모든 작업(Action)에 대해 "s3:\*"가 적용된 새로운 IAM 사용자는 버킷에 접근할 수 있을 것이다. 접근을 차단하고 싶은 사용자 목록을 특정시키기 보다 ..

AWS 노트 2020.04.10

Lambda 함수 실행기 (4) AWS Cloud Watch 이용해서 주기적으로 Lambda 함수 실행시키는 CDK Stack 구축하기

오늘의 과제: 5분 간격으로 기동되는 Lambda handler를 CDK stack 안에서 구현하기 (handler를 5분 간격으로 기동되게 하는 것이 아니라 5분 동안 축적된 쿼리를 handler가 처리하게 하려면 aws-lambda-event-source 사용해야 함) AWS 설명서: Amazon Cloud Watch Amazon Cloud Watch AWS 리소스와 AWS에서 기동하는 프로그램을 실시간으로 모니터링 할 수 있음 지표 모니터링할 변수 데이터 요소: 시간에 따른 변수 값 순서 상관 없이 추가 가능 정렬된 시계열 집합으로 검색 가능 타임스탬프, 측정 단위 CloudWatch에 게시된 시간순 데이터 요소 세트 e.g. EC2 인스턴스의 CPU 사용량 AWS 서비스는 CloudWatch에 지..

AWS 노트 2020.04.09

로컬에서 AWS CDK Stack 빌드해서 Lambda 함수 실행시키기

CDK란 코드 인프라를 관리하기 위한 소프트웨어 개발 프레임워크이다. 예를 드는게 이해가 빠르니 먼저 DynamoDB에서 데이터를 가져와 Lambda 함수로 처리해 S3 버킷에 격납하는 상황을 상상해보자. AWS 콘솔로 위의 태스크를 수행한다 했을 때 DynamoDB의 데이터, Lambda 함수, S3 버킷을 하나 하나 만들어야 한다. 상황이 변해 더이상 DynamoDB의 데이터를 사용하지 않는다던가 더이상 사용할 데이터가 없을 경우, Lambda 함수와 S3 버킷도 사용을 중지하거나 삭제해야 할 것이다. 그리고 각각의 서비스에 들어가 하나 하나 정성스레 중지/삭제를 해야 한다. 하지만 Amazon CDK(Cloud Development Kit)의 stack을 하나 만들어 그 안에 DynamoDB, La..

AWS 노트 2020.04.08

AWS Lambda Python 실행기 (3) 특정 Lambda 함수로만 특정 S3 Bucket에 접근 가능하도록 IAM역할 부여하기

오늘 과제는 아래와 같다. 1. 임의의 S3 버킷을 생성한다. 2. 아무도 접근하지 못하도록 설정한다. 3. 특정 Lambda 함수로만 임의의 S3 버킷에 있는 파일을 읽을 수 있도록 IAM을 설정한다. 임의의 S3 버킷 생성하기 참고로 S3란 데이터들이 들어있는 저장소라 보면 된다. AWS 콘솔에 로그인 서비스에서 S3 선택 버킷 만들기 버킷 이름은 고유해야 하며 _은 사용 불가 적당히 hello-lambda-test-bucket이라 해준다 허용된 것보다 많은 버킷을 생성하려고 시도했습니다.라는 에러가 뜨면서 버킷 생성을 못했다 '허용된 것보다 많은 버킷을 생성하려고 시도했습니다' TooManyBuckets error일 때 버킷 할당량 변경하기 콘솔에 로그인 한 상태에서 Service Quotas로 이..

AWS 노트 2020.04.07

AWS Lambda Python 실행기 (2)

event: { "key1": "value1", "key2": "value2", "key3": "value3" } 저번 글에 작성한 함수의 에러를 찾기보다 먼저 handler를 파악해야 했다. AWS Lambda에서 제공하는 위의 테스트 이벤트를 사용해 handler를 만든다. handler 1: import json def lambda_handler(event, context): return event["key1"] result 1: Response: "value1" 에러가 나지 않고 실행되었다. handler 2: import json def lambda_handler(event, context): return event retult 2: Response: { "key1": "value1", "key..

AWS 노트 2020.04.06