AWS 노트 31

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

AWS Lambda Python 실행기 (1)

코드를 쓰기까지 콘솔에 로그인 Lambda 선택 함수 함수 생성 새로 작성 함수 이름: hello_lambda 런타임: Python 3.x 권한: 기본 Lambda 권한을 가진 새 역할 생성 "Lambda 이름이 [myFunctionName]-role-[some_number_and_alphabet]이고 Amazon CloudWatch Logs에 로그를 업로드할 수 있는 권한이 포함된 실행 역할을 생성합니다." 함수 생성 hello_lambda Code entry type: 코드 인라인 편집 런타임: Python 3.x 핸들러: lambda_function.lambda_handler 오른쪽 위 '테스트' 버튼: 테스트 이벤트 evend: HelloKeys 함수 핸들러(handler) import json ..

AWS 노트 2020.04.03

AWS Lambda

Lamda 서버의 프로비저닝(Provisioning)이나 별도의 서버 관리 불필요 어떠한 어플리케이션 / 백엔드도 코드를 Lambda에 업로드하면 서버를 관리하지 않고 바로 실행 가능 관리1: 서버 및 운영 체제 유지 관리 관리2: 용량 프로비저닝 및 자동 조정 관리3: 코드 및 보안 패치 배포 관리4: 코드 모니터링 및 로깅 고가용성을 위한 스케일링 혹은 실행을 위한 모든 것은 Lambda가 해줌 다른 AWS 서비스에서 자동적으로 코드를 트리거하도록 설정 가능 웹 또는 모바일 어플에서 직접 호출하도록 설정 가능 대신 제공된 런타임에서 인스턴스를 컴퓨팅하거나 운영체제를 사용자가 지정하는 일은 불가능 자체 컴퓨팅 리소스를 관리하고 싶다면 EC2나 Elastic Beanstalk을 추천 컴퓨팅(계산 처리)하..

AWS 노트 2020.04.03

AWS IAM

AWS 설명서: IAM AWS 설명서: IAM으로 작업하는 AWS 서비스 AWS IAM(Identity and Access Management): AWS 리소스에 액세스하는 권한 관리 서비스 로그인으로 인증되고 권한이 부여된 대상을 제어 권한: 자격 증명 추가 비용 발생하지 않는 서비스 IAM 사용자 또는 AWS STS(Security Token Service) 임시 보안 자격 증명으로 다른 AWS 서비스에 액세스 하는 경우에는 요금 부과 IAM 사용자를 처음 생성할 때에만 '루트 사용자(AWS 계정을 처음 생성할 당시 모든 액세스 권한이 부여된 ID)'를 사용해야 함 암호나 Access Key를 공유하지 않고 다른 사용자에게 권한 부여 가능 여러 사람에게 서로 다른 다양한 권한 부여 가능 EC2 인스턴..

AWS 노트 2020.04.03

AWS EC2, CLI

AWS 설명서: EC2 AWS 설명서: CLI EC2 = Elastic Compute Cloud Amazon이 제공하는 서버(클라우드) 원하는 만큼 가상 서버 구축 가능 인스턴스(275개), AMI, 인스턴스 유형 보안 및 네트워크 구성과 스토리지 관리 가능 키페어 사용해 로그인 정보 보호 인스턴스 스토어 볼륨: 임시 데이터는 인스턴스 종료 시 삭제 EBS(Elastic Block Store) 볼륨으로 영구적으로 데이터 저장 인스턴스, EBS 볼륨 등의 리소스를 물리적 장소에서 액세스 가능한 리전(22개) 및 가용 영역(69개) 보안 그룹 사용: 프로토콜, 포트, 소스 IP 범위 지정 방화벽 탄력적 IP 주소(EIP) 사용자가 생성해 EC2 리소스에 할당할 수 있는 메타데이터 태그 고객 네트워크와 간편히..

AWS 노트 2020.04.03