AWS 노트 31

로컬에서 AWS Elastic Container Registry로 Docker 이미지 push하기

AWS 콘솔 화면에서 View push commands로 확인할 수 있지만 일단 메모. # Docker 로그인 $ aws ecr get-login-password --region {region} --profile {profile_name} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com # 컨테이너 만들기 $ docker build -t {local_image_name} -f path/to/Dockerfile . $ docker tag {local_image_name}:{tag} {account_id}.dkr.ecr.{region}.amazonaws.com/{remote_container_n..

AWS 노트 2023.07.18

cdk bin디렉토리 안에 있는 앱 파일 이름 바꾸기

예를 들어 파일 구조가 아래와 같을 때 cdk.ts가 app파일인데 |--- cdk | |--- bin | | |--- cdk.ts | |--- lib | | |--- some-stack.ts | |--- test | | |--- some-stack.test.ts | |--- cdk.json | |--- package.jsonapp 파일 이름만 단순히 바꾸면 ---- cdk | |--- bin | | |--- new-cdk.ts | |--- lib | | |--- some-stack.ts | |--- test | | |--- some-stack.test.ts | |--- cdk.json | |--- package.json아와 같은 에러가 난다. node:internal/modules/cjs/loader:..

AWS 노트 2023.06.08

역할(Role) 없이 움직이던 EC2인스턴스에 새로 만든 역할 연계하기 (aws cli 사용)

전제조건: 기존에 사용하던 EC2인스턴스는 CDK로 만들어져 있지 않음. AWS console에서 직접 버튼 누르면서 만들 수도 있으나 권한이 없는 경우 상사(들이 권한을 갖기 때문)에게 부탁할 일이 생긴다. 마냥 알아서 만들어 주세요 하면 시간 없는 상사들은 굉장히 귀찮아할 수도 있기 때문에 가급적이면 스크립트를 작성해서 넘기는 편이다. 때문에 이번에는 aws cli만을 이용했다. 참고 document: https://aws.amazon.com/jp/blogs/news/new-attach-an-aws-iam-role-to-an-existing-amazon-ec2-instance-by-using-the-aws-cli/ 예를 들어, 기존에 사용하던 EC2가 S3에 파일을 생성/수정/삭제/읽어오기 등의 처리..

AWS 노트 2022.03.16

Lambda에서 특정 네트워크 환경에서만 리퀘스트를 보낼 수 있는 API를 사용하기

하고 싶은 것 VPN으로 회사 네트워크에 접속해 서버1에 접속하고 서버2에 접속해야 리퀘스트에 성공하는 API-1를 Lambda함수에서 사용하고 싶다. 배경 API는 ECS로 관리되고 있다. 사용하고 싶은 API-1은 API-0을 통해서만 리퀘스트를 보낼 수 있다. API-0은 AWS의 LoadBalancer와 VPC를 이용해 구축되어있다. API-1도 AWS의 LoadBalancer와 VPC를 이용해 구축되어있다. API-1의 LoadBalancer는 API-0의 LoadBalancer에 설정되어있는 SecurityGroups를 통해서만 접속할 수 있다. 따라서 두 LoadBalancer의 TargetGroup의 VPC는 동일하다. Lambda함수은 API-0을 통해서 API-1을 사용하고 싶지 않다...

AWS 노트 2020.11.19

Amazon Athena 를 사용해 SageMaker 노트북에서 SQL 쿼리 실행하기 (Amazon Web Services 블로그 번역)

원글: Amazon Athena を使用した SageMaker ノートブックからの SQL クエリの実行方法 인터넷이 등장하고 데이터가 방대해지고 고속화되고 다양화되고 있다. 많은 기업은 이러한 '빅 테이터' 관리라는 문제를 안고 있으며 '빅 데이터'를 해석해서 최적의 결과를 도출하는데 어려움을 겪고 있다. 데이터 수집, 보존, 공유, 분석, 가시화를 어렵게 하는 원인으로 기업에서 데이터를 저장하는 방식, 끊기지 않는 여러 포맷의 데이터 유입, 기술 환경의 끝 없는 변화 등을 들 수 있다. 그렇다면 데이터 스토어에 접속하는 견고한 데이터 파이프라인을 구축해 데이터에서 인사이트를 취득할 수 있는 플랫폼을 데이터 사이언티스트나 엔지니어에게 제공하려면 어떻게 해야 할까. 데이터 스토어 일원화에 투자하는 기업이 늘고 ..

AWS 노트 2020.07.17

Docker 컨테이너를 AWS ECR 에 작성한 이미지로 build 하기 (SageMaker training job)

디렉토리 구조 새로운 컨테이터를 빌드할 때에는 base 가 필요하다. (굳이 base 를 나눌 필요는 없지만 나누는 편이 깔끔한 것 같다) /your_repository ├── lib │ ├── build_and_push.sh │ ├── deploy.sh │ └── create_training_job.py └── containers ├── {image} │ └── sub_directory │ │ ├── train │ │ ├── wsgi.py │ │ ├── nginx.conf │ │ └── some_processer.py │ └── Dockerfile └── {image}-base └── Dockerfile build_and_push.sh 수정 전 원래 코드: awslabs/amazon-sagemaker-..

AWS 노트 2020.07.15

Docker이미지를 push할 때 Error response from daemon: No such image: {image}:{tag} 에러가 나면서 실패할 때

제목에 적은 에러 문구 위에 아래와 같은 에러가 나 있을 것이다. unable to prepare context: unable to evaluate symlinks in Dockerfile path: Dockerfile 에 FROM {account_id}.dkr.ecr.{region}.amazonaws.com/{base_image}라고 적었을텐데(본인이 적지 않았다면 적혀 있을텐데) 이 {base_image}부터 build & push 하지 않으면 push 하고 싶은 {image}도 push 가 안된다. {base_image}도 없다고 나온다면 AWS ECR 에 새롭게 작성한다. $ aws ecr create-repository --repository-name {base_image} {base_image..

AWS 노트 2020.07.13

An image does not exist locally with the tag: {account_id}.dkr.ecr.{region}.amazonaws.com/{image} 에러가 날 때

먼저 AWS Elastic Container Registry (이하 ECR) 에 {image}라는 repository 가 있는지 확인한다. $ aws ecr describe-images --repository-name {image} 없다면 만든다. $ aws ecr create-repository --repository-name {image} local 에 {image} 가 없어서 에러가 나는 것이므로 local 에 {image} 를 pull 한다. $ docker pull {account_id}.dkr.ecr.{region}.amazonaws.com/{image}:{tag} 보통 태그는 latest를 붙여서 가져온다.

AWS 노트 2020.07.13

AWS Lambda 와 AWS API Gateway 로 Slack에 csv 파일이 upload 되면 알아서 데이터 체크해서 AWS S3에 업로드 하는 Bot 만들기

목적 Google Spreadsheets 에서 수동으로 관리하는 데이터를 AWS Redshift의 테이블로 만들어 다른 데이터를 분석하는데 사용할 수 있도록 하자. 기각: Google Spreadsheets에서 바로 파일을 업로드 하면 안될까? 로컬 혹은 다른 서비스에서 Spreadsheets 속 데이터를 바로 읽어오려면 인증 ( Google CloudPlatform ) 을 해야 한다. 현재 올라가 있는 데이터는 회사 메일 주소를 갖고 있지 않는 사람 혹은 API에 대해 공유를 거부해 놓은 상태이니 service account 를 사용하려면 Google suits 에서 admin 이 그 권한을 부여해 줄 필요가 있다. 서비스 계정 외에는 본인 인증하는 수 밖에 없기 때문에 ( API key, OAuth ..

AWS 노트 2020.06.28