2016-07-01 2 views
5
나는 다음과 같은 한 - 라이너 - 태그를 생성하는 입력으로 생성 된 인스턴스 ID를 실행-인스턴스를 호출하고 전달하려고 해요

:이 작업을 시도 할 때하나의 AWS CLI 명령의 출력을 입력으로 파이프하는 방법이 있습니까?

aws ec2 run-instances \ 
    --image-id ami-1234 \ 
    --output text \ 
    --query Instances[*].InstanceId | \ 
aws ec2 create-tags \ 
    --tags 'Key="foo",Value="bar"' 

, 나는 다음을 얻을 :

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] 
To see help text, you can run: 

    aws help 
    aws <command> help 
    aws <command> <subcommand> help 
aws: error: argument --resources is required 

이와 비슷한 것이 가능한지 또는 변수 (또는 내가 생각하지 않은 다른 방법)를 사용해야 할 것인가?

추가 배경

이 질문에 대한 의욕이 같은 윈도우 PowerShell 용 AWS 도구와 수 있다는 것입니다; AWS CLI를 사용하여 동일한 작업을 수행하고 싶었습니다.

등가 PowerShell을 예제 :

New-EC2Instance -ImageId ami-1234 | 
    ForEach-Object Instances | 
    ForEach-Object InstanceId | 
    New-EC2Tag -Tag @{key='foo';value='bar'} 
+1

첫 번째 명령의 출력을 캡처하여 두 번째 명령에 매개 변수로 입력하는 스크립트를 작성해야합니다. 사용중인 파이프가 작동하는 방식은 없습니다. 텍스트를 파이프로 연결하는 방법을 알면 어떻게됩니까? –

+0

그건 내가 의심 한 것입니다. 나는 단지 확신하고 싶었습니다. 이와 같은 FWIW 기능은 AWS PowerShell 도구 ("파이프 라인의 값"속성을 선언하는 명령)에서 가능하지만 AWS 명령보다는 PowerShell의 기능이 더 중요합니다. –

+0

@MarkB'create-tags'는 인스턴스 ID (목록 일 수 있지만이 경우 단일 값이 될 것입니다) 인'resources' 매개 변수를 취합니다.이 매개 변수는 방금 시작한 인스턴스의 ID입니다 'run-instnace' 명령의 질의 결과. 내가 뭔가 빠진거야? –

답변

9

그것은 xargs를 {} 생성 - 태그의 --resources 매개 변수로 먹이를 인스턴스 ID를 캡처를 활용하여 수행 할 수 있습니다. 원래의 질문의 예와는 달리,이 괄호에 --query 매개 변수 값의 "InstanceID에"부분을 포장하는 것이 중요하다고

aws ec2 run-instances \ 
    --image-id ami-1234 \ 
    --output text \ 
    --query Instances[*].[InstanceId] | \ 
xargs -I {} aws ec2 create-tags \ 
    --resources {} \ 
    --tags 'Key="foo",Value="bar"' 

주 그래서 하나는 --count 큰 것보다와 런타임 인스턴스를 호출하는 경우 , 리턴 된 다중 인스턴스 ID는 탭으로 구분되는 대신 별도의 행으로 출력됩니다. http://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html#controlling-output-format

+0

쉘 레슨에 진심으로 감사드립니다. 나는이 것에 대해 내 리눅스가 무지하다는 것을 보여 주었다. 이것은 한 번에 하나의 인스턴스를 회전시킬 때까지 훌륭하게 작동했습니다 (공정한 것으로 내 질문을 만족시킵니다). --count가 1보다 큰 경우 다시 작동시키는 법을 알아내는 데 어려움을 겪고 있습니다 (다시 말해, Linux의 무지를 보여줍니다). 시간/성향이 있다면 여러 인스턴스에 대한 계정 응답을 업데이트 할 수 있습니까? –

+2

FWIW, 여러 인스턴스가 작동하지 않는 이유는 --query 매개 변수 값과 관련이 있습니다.이 예에서는 탭으로 구분 된 여러 인스턴스 ID를 반환합니다. --query 매개 변수 값 내의 대괄호 안에 "InstanceId"를 래핑하면 문제가 해결됩니다. 나는 대답을 업데이트 할 것이다. 도움을 주셔서 감사합니다. @ Frédéric –

+0

감사합니다. 라파엘 - 제안서를 바탕으로 답변을 업데이트했습니다. 거부되었다는 것을 알았지 만 완전히 이해한다고 생각합니다. –

관련 문제