AWS Batch를 사용할 때까지 요약
소개
AWS Batch를 사용하여 S3에 정적 콘텐츠를 업로드하고 전달하고 싶었습니다만, 초보적인 곳에서 걸리는 부분이 몇 가지 있었으므로, 비망록적으로 정리해 둡니다.
만들고 싶은 구성은 굉장히 다음과 같습니다.
IAM 역할을 사용하여 AWS CLI 인증
공식 설명은 이쪽
하지만 이 작업을 수행하기 전에 IAM에 액세스하여 액세스 키를 생성해야 합니다.
AWS CLI를 사용하여 ECR에 로그인
공식 설명은 이쪽 에 있습니다만, 우선 로그인 부분의 여기
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
--username AWS
는 그대로 괜찮습니다. 적자 부분만 바꾸면 됩니다만, 조금 고민했습니다.Batch 실행
공식 설명은 이쪽
ECR에 대한 PUSH가 성공하면 Batch를 만들 때 ECR의 이미지 전체 경로를 복사하기만 하면 됩니다.
실행에서 로그가 나오기까지 잠시 시간이 걸리기 때문에 초조히 기다리자.
로그는 Cloud Watch로 출력되는 것 같습니다.
스팟 인스턴스에서 실행
스팟 플리트롤이 필요한 것 같습니다. 공식 설명은 이쪽
다음 두 명령을 포티포치 실행하면 스팟 인스턴스를 실행하기 위한 역할을 할 수 있는 것 같습니다.
나중에 컴퓨팅 환경을 설정할 때 스팟을 선택하면 스팟 인스턴스에서 실행할 수 있습니다.
$ aws iam create-role --role-name AmazonEC2SpotFleetRole \
--assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Sid":"","Effect":"Allow","Principal":{"Service":"spotfleet.amazonaws.com"},"Action":"sts:AssumeRole"}]}'
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole \
--role-name AmazonEC2SpotFleetRole
S3로 파일 보내기
다음과 같이 DockerFile을 만들고 hello-world 이미지를 업데이트합니다.
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install curl unzip && \
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install
# Create Index File & POST To S3
RUN echo 'echo "Hello World From ECR!" `date` > /root/index.html' > /root/run_awscli.sh && \
echo 'aws s3 cp --acl public-read /root/index.html $AWS_BUCKET_URI' >> /root/run_awscli.sh && \
chmod 755 /root/run_awscli.sh
CMD /root/run_awscli.sh
환경 변수를 주어 기동하면(자), S3에 파일이 배치되어 브라우저로부터 파일을 참조할 수 있습니다 (런타임의 환경 변수에 대해서는 여기 를 참조.
AWS_BUCKET_URI
는 자전입니다).$ docker run -e AWS_ACCESS_KEY_ID=xxxx -e AWS_SECRET_ACCESS_KEY=xxxx -e AWS_BUCKET_URI=xxxx hello-world
후에는, 이 이미지를 ECR에 PUSH 해, AWSBatch의 작업 정의를 재작성하면 S3에 파일을 PUT 할 수 있습니다.
정기 실행
공식 설명은 이쪽
CloudWatch 이벤트 - 규칙에서 작성한 대로 설정하기만 하면 됩니다.
매우 쉬웠습니다.
결론
Docker조차도 익숙하다면 꽤 쉽게 일괄 실행을 할 수있었습니다.
더 쉬운 방법 등이 있으면 알려주세요 mm
Reference
이 문제에 관하여(AWS Batch를 사용할 때까지 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ochiba-leaf/items/0ae7d5fcdb36ba3c213f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)