Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
회사에서는 로그를 남기기 위해 각각의 사원에게 IAM user를 할당한다. 하지만 모든 IAM user에게 일일이 권한을 부여하고 관리하는 것을 쉽지 않다. 따라서 user group라는 IAM 사용자 집합으로 그룹 내의 사용자들의 권한을 지정할 수 있다. 간단하게 user를 group에 권한 추가해보자. S3 그룹은 S3 읽기 권한을 가진다. 이 그룹에 사용자를 추가하자. 이제 그룹 내 정상적으로 추가가 된다. IAM login URL로 접속 사용자의 보안 자격 증명 탭에서 콘솔 로그인 링크가 확인된다. 이 링크로 IAM 유저에 바로 접속할 수 있다. 이 유저는 S3 그룹에 속했기 때문에, read 권한을 상속받아 S3의 버킷 리스트들이 보인다. 반면에 ec2는 권한이 없기 때문에 읽을 수 조차 없다...
aws의 ALB(애플리케이션 로드밸런서)를 생성하다보면 스키마(체계)를 선택할 때가 있다. 선택에 따라 internal load balancer 혹은 internet-facing load balancer로 생성이 되고, 생성 후에는 변경할 수 없다. 두 종류는 완전히 다르기 때문에, 원하는 방식에 따라 선택해 주어야 한다. internet-facing internet-facing Load Balancer는 (LB의 컴퓨팅 노드들이) public ip를 가지게 된다. DNS 서버에는 이 IP들이 등록이되어, 외부 인터넷으로 부터 요청을 받을 수 있게 된다.이때의 DNS 서버는 AWS의 자원이 아니여도 가능하게 된다. public ip로 노출된 Load Balancer가 라우팅을 해주기 때문에 대상 그룹의 ..
Lambda를 비동기로 호출해야 할 경우 AWS SDK(python용 sdk는 boto3)를 이용해서 Lambda 함수를 호출할 수 있는데, 이를 그대로 Lambda에서 사용하면 다른 Lambda 함수를 호출할 수 있게 된다. boto3의 경우, 라이브러리 업로드 없이도 import 가능하므로 lambda에서의 사용도 편리하다. 이때 고려해 볼 문제로는 Lambda가 15분의 시간제한이 있다는 것이다. 호출한 후 값의 반환을 기다릴 필요가 없는 함수를 사용한다면, 이를 동기식(응답 대기)으로 호출하는 것은 시간과 비용에서 비효율적이다. 물론 AWS SDK는 이미 Lambda를 비동기식으로 호출하는 api 옵션을 제공한다. Invoke API https://docs.aws.amazon.com/ko_kr/l..
이전 글에 이어서 이번에는 SNS로 트리거 되는 Slack 알림을 Lambda로 만들어보자. https://everenew.tistory.com/331 AWS boto3로 SNS Topic에 메시지 전송하기 (python) 이번에는 AWS의 SNS Topic(주제)에 메시지를 전송시켜 보자. 주요 코드는 아래의 공식문서를 참고해서 만들었다. https://docs.aws.amazon.com/ko_kr/code-library/latest/ug/python_3_sns_code_examples.html 자격증명 방식 AW everenew.tistory.com Slack WebHook 추가 일단 사용할 slack 채널을 생성하고 webhook를 추가해 주자. 채널 설정 -> 앱 추가에서 webhook를 추가해서..
이번에는 AWS의 SNS Topic(주제)에 메시지를 전송시켜 보자. 주요 코드는 아래의 공식문서를 참고해서 만들었다. https://docs.aws.amazon.com/ko_kr/code-library/latest/ug/python_3_sns_code_examples.html 자격증명 방식 AWS 자원 내부에서 동작한다면 아래처럼 자격증명을 파일로 저장시켜서 계정에 접근할 수 있다. https://docs.aws.amazon.com/ko_kr/powershell/latest/userguide/specifying-your-aws-credentials.html AWS 자격 증명 사용 - AWS Tools for PowerShell AWS 자격 증명 사용 각 AWS Tools for PowerShell 명령..
원래 잘 실행되던 태스크가 갑자기 오류가 나기 시작했다. ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 3 time(s): RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-2.amazonaws.com/": dial tcp 54.180.184.245:443: i/o timeout. Please check your task network configur..
SAA를 준비한 이유 AWS 자격증에서 Foundational 단계는 전공자라면 따기 쉬운 편이다. 물론 따면 좋겠지만, AWS 자격증 시험 비용들이 상당하기 때문에 본인은 바로 Solutions Architect Associate(SAA) 단계에 도전하였다. Foundational는 Associate의 다음 단계로, 1년 이상의 실무 경험이 뒷받침해주어야 한다. (필수인 것은 아니다.) 본인은 AWS 서비스를 제대로 사용하기 시작한 지 2달이 안된다. 하지만, 제대로된 아키텍처 설계를 하기에는 AWS cloud 서비스를 너무 몰랐기 때문에 결국에 공부가 필요하다고 생각했다. 그렇다면 공부하는 김에 자격증까지 따보자! 하는 생각에 SAA를 준비하게 되었다. SAA 공부를 하기 전에는 EC2 밖에 쓸 줄 ..
Python의 streamlit 라이브러리를 사용하면 간단한 구현만으로도 빠르게 웹서비스를 만들어낼 수 있다. 물론 구현과 실행이 간단하더라도 웹서비스로서 동작하려면, 서버 역할을 하는 컴퓨팅 자원에서 코드가 동작해야 한다. 이를 위해 AWS EC2를 GUI로 보여주는 Cloud9 서비스에서 간단하게 웹서비스를 동작시켜 보자. EC2에 streamlit 실행시키기 python을 설치하고 두 가지 명령어를 실행하면 바로 웹서버가 동작한다. 하지만 바로 서버 ip로 연결하면 접속이 안 될 수 있다. 이는 EC2의 네트워크 보안이 외부 접속을 기본적으로 차단하도록 생성되어 있기 때문이다. 따라서 인스턴스의 보안그룹에 들어가서, 인바운드 규칙을 자신의 ip 혹은 anywhereIPv4로 설정해 주자. strea..
AWS Lambda란? AWS Lambda는 AWS의 클라우드 Serverless 서비스이다. 서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다. 서버리스는 서버가 없다기보다는 추상화를 통해 신경 쓸 필요가 없어지는 것이다. 서버는 AWS가 관리하여 탄력적으로 스케일 업/다운이 진행된다. 특히, 트리거를 통해 실행되기 때문에 실행된 만큼만 비용을 지불하면 된다. 만약 대학교의 홈페이지 공지가 올라오는 것을 이벤트라고 하면, 이를 트리거로 등록하여 크롤링을 진행하여 slack 봇으로 메시지를 전달하는 lambda 코드를 작성해 보자. AWS Lambda로 학교 공지사항 크롤링하기 일단 Lambda 함수를 생성해..