1

두 레이어 (Rails 응용 프로그램 서버 및 mySQL db)로 구성된 간단한 스택을 정적으로 구성하는 데 AWS opsworks를 사용하고 있습니다.AWS CLI EC2 "대기"기능을 사용하는 올바른 방법은 무엇입니까?

성공적으로 스택을 구성하고 시작한 후 내 응용 프로그램을 배포 한 후 스택의 시작 활동을 내 파이프 라인의 일부로 자동화하고 싶습니다. AWS CLI는 스택을 시작하고 개별 서버의 인스턴스 ID를 검색 한 다음 완료 상태 ("인스턴스 실행 중")에 대해 AWS를 폴링하는 기능을 EC2 wait 명령을 사용하여 제공합니다.

아래 스크립트는 (세 번째는이 두 서버에 대한 대기 명령을 시작, 첫 번째 명령은 두 번째 명령은 두 호스트의 인스턴스 ID의의를 검색, 스택을 시작합니다) 내가 사용하고있는 것입니다 :

#!/bin/bash 

aws opsworks --region us-east-1 start-stack --stack-id 9e1b0534-5b38-4fa5-b30c-f849dda8f46b   

instance_id=$(aws opsworks --region us-east-1 describe-instances --stack-id 9e1b0534-5b38-4fa5-b30c-f849dda8f46b --query "Instances[].Ec2InstanceId" --output text) 

aws ec2 wait --region ap-southeast-1 instance-running --instance-ids $instance_id 

이 스크립트를 실행할 때 올바른 ID 인 경우에도 두 ID 중 하나에서 항상 "InvalidInstanceID"예외가 발생합니다. 두 번째로, AWS 콘솔을 통해 스택을 병렬로 시작하는 동안 쉘에서 마지막 명령을 직접 실행하면 서버가 실제로 실행되고 실행되기 전에 wait 명령이 반환된다는 사실이 밝혀졌습니다 (이는 전체 연습 문제입니다).

마지막으로, 비동기 작업을 차단하는 데 필수적인 시간 초과 정보가 없습니다. 대기 시간 제한은 어디에서 정의 할 수 있습니까?

내 코드에 결함이 있는지, 또는 고려해야 할 특정한 고려 사항이 있습니까?

답변

0

aws opsworks describe-instances 명령은 --region us-east-1을 사용하지만 aws ec2 wait 명령은 --region ap-southeast-1을 사용합니다. 당신이 기다리고있는 당신의 인스턴스가 우리 동쪽 1에 대립하는 남동쪽 -1에 있다고 확신합니까?

+0

Opsworks 작업은 EC2 및 기타 기초 서비스가 모든 지역에 노출되는 동안 서버가있는 지역에 관계없이 항상 us-east-1을 사용해야합니다. – monohusche