다양한 AWS 서비스에서 시스템 관리자 파라미터를 참조하려면 어떻게 해야 하나요?

4분 분량
0

AWS Systems Manager의 기능인 Parameter Store를 사용하여 시스템 관리자 파라미터를 다양한 AWS 서비스에 통합하고 싶습니다.

간단한 설명

다음 예제 시나리오는 시스템 관리자 매개 변수를 참조할 수 있는 다양한 방법입니다.

  • 시스템 관리자 명령 문서에서 일반 문자열 유형 매개변수 참조하기
  • 시스템 관리자 명령 문서에서 보안 문자열 유형 매개변수 참조하기
  • AWS CloudFormation 템플릿에서 문자열 유형 매개변수 참조하기
  • Boto3 스크립트에서 문자열 유형 매개변수 참조하기
  • 시스템 관리자 자동화 문서에서 문자열 유형 매개변수 참조하기
  • AWS Command Line Interface(AWS CLI)에서 문자열 유형 매개변수 참조하기

해결 방법

시스템 관리자 명령 문서에서 일반 문자열 유형 매개변수 참조하기

이 예에서는 Amazon Elastic Compute Cloud(Amazon EC2) Linux x86(64비트) 인스턴스에 AWS Command Line Interface(AWS CLI) 버전을 설치하는 것입니다. AWS CLI 버전 번호는 매개변수 저장소에 /CLI/required-version으로 저장됩니다.

이 예에서는 명령 문서에서 매개 변수를 **{{ssm:/CLI/required-version}}**으로 참조합니다.

참고: {{ssm:parameter-name}} 형식으로 명령 문서에서 모든 시스템 관리자 매개 변수를 참조할 수 있습니다.

{  
  "mainSteps": [  
    {  
      "action": "aws:runShellScript",  
      "name": "installSoftware",  
      "inputs": {  
        "runCommand": [  
          "echo 'Installing AWS CLI version {{ssm:/CLI/required-version}}'",  
          "curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-{{ssm:/CLI/required-version}}" -o "awscliv2.zip",  
          "unzip awscliv2.zip",  
          "sudo ./aws/install"  
        ]  
      }  
    }  
  ]  
}

시스템 관리자 명령 문서에서 보안 문자열 유형 매개변수 참조하기

SecureString 매개변수 유형을 사용하는 경우, 먼저 AWS CLI 명령을 통해 매개변수의 암호를 해독해야 합니다. 그런 다음 명령 문서에서 매개 변수를 사용할 수 있습니다.

참고: 매개 변수를 먼저 해독하지 않으면 기록되는 값이 메타데이터 값입니다.

다음은 명령 문서에서 보안 문자열 유형 매개 변수를 참조하는 예입니다.

{  
  "mainSteps": [  
    {  
      "action": "aws:runShellScript",  
      "name": "installSoftware",  
      "inputs": {  
        "runCommand": [  
          "secure=$(aws ssm get-parameters --names /CLI/required-version --with-decryption --query Parameters[0].Value)",  
          "curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-$secure" -o "awscliv2.zip",  
          "unzip awscliv2.zip",  
          "sudo ./aws/install"  
        ]  
      }  
    }  
  ]  
}

CloudFormation 템플릿에서 문자열 유형 매개변수 참조하기

CloudFormation 템플릿을 사용하여 문자열 유형 매개변수를 참조할 수 있습니다. 값을 문자열로 정의하면 해당 매개변수에 대해 반환되는 값이 문자열임을 나타냅니다. 지원되는 다른 파라미터 유형에 대해서는 지원되는 SSM 파라미터 유형을 참조하세요.

다음은 매개 변수 이름이 InstanceName으로 매개 변수 저장소에 저장된 Amazon EC2 인스턴스를 시작하는 예제입니다.

{  
  "Parameters": {  
    "MyInstanceName": {  
      "Type": "AWS::SSM::Parameter::Value<String>",  
      "Default": "InstanceName",  
      "Description": "Name of the EC2 instance"  
    }  
  },  
  "Resources": {  
    "TestInstance": {  
      "Type": "AWS::EC2::Instance",  
      "Properties": {  
        "ImageId": "ami-xxxx",  
        "InstanceType": "t3.xlarge",  
        "Tags": [{  
          "Key": "Name",  
          "Value": { "Ref": "MyInstanceName" }  
        }]  
      }  
    }  
  }  
}

CloudFormation은 SecureString로 정의하는 템플릿 매개 변수를 지원하지 않습니다. 시스템 관리자 매개 변수 유형입니다. 그러나 동적 참조를 사용하여 지원되는 리소스에 대해서만 CloudFormation 템플릿에서 보안 문자열 매개 변수를 참조할 수 있습니다.

CloudFormation 템플릿에서 보안 문자열 매개변수에 대한 동적 참조를 사용하는 경우 이 예제를 참조하세요.

Boto3 스크립트에서 문자열 유형 매개변수 참조하기

Boto3에서는 Name 매개 변수를 사용하여 get_parameter 함수를 호출할 수 있습니다. 암호화된 매개변수를 참조하기 위해 WithDecryption 필드를 포함할 수도 있습니다.

다음 예에서는 인스턴스를 시작하기 위해 /instance/name라는 보안 문자열 시스템 관리자 매개 변수의 값을 참조합니다. 이 예에서 EC2 인스턴스 이름은 시스템 관리자 매개 변수 **/instance/name:**에 저장됩니다.

참고: 문자열 유형 매개 변수와 함께 Boto3를 사용하는 경우 WithDecryption 필드를 제거할 수 있습니다.

import boto3  
ec2_client = boto3.client('ec2')  
ssm_client = boto3.client('ssm')  
parameter_name = '/instance/name'  
response = ssm_client.get_parameter(  
    Name=parameter_name,  
    WithDecryption=True  
)  
instance_name = response['Parameter']['Value']  
response = ec2_client.describe_instances(  
    Filters=[  
        {  
            'Name': 'tag:Name',  
            'Values': [instance_name]  
        }  
    ]  
)  
instance_id = response['Reservations'][0]['Instances'][0]['InstanceId']  
ec2_client.start_instances(InstanceIds=[instance_id])  
print("Instance started successfully.")

시스템 관리자 자동화 문서에서 문자열 유형 매개변수 참조하기

시스템 관리자 자동화 문서에서는 aws:executeAwsApi API를 사용하여 시스템 관리자 매개변수를 참조할 수 있습니다.

다음 예에서는 AMI Id가 시스템 관리자 매개변수에 저장되어 이 자동화 문서의 입력으로 구문 분석됩니다. 1단계의 매개변수 값은 EC2 인스턴스 시작을 위해 2단계에 입력으로 전달됩니다.

참고: SecureString 매개 변수를 참조하는 경우 WithDecryption 필드의 값을 True로 설정할 수 있습니다. 그러나 자동화 단계 getparameter의 출력에는 매개변수의 암호 해독된 값이 표시됩니다.


description: Sample runbook using AWS API operations
schemaVersion: '0.3'
assumeRole: '{{ AutomationAssumeRole }}'
parameters:
  AutomationAssumeRole:
    type: String
    description: (Optional) The ARN of the role that allows Automation to perform the actions on your behalf.
    default: ''
  AMIParameter:
    type: String
    description: SSM Parameter name to get the AMI ID from
mainSteps:
  - name: getparameter
    action: 'aws:executeAwsApi'
    inputs:
      Service: ssm
      Api: GetParameter
      Name: '{{AMIParameter}}'
      WithDecryption: false
    outputs:
      - Name: ImageId
        Selector: Parameter.Value
        Type: String
  - name: launchOneInstance
    action: 'aws:executeAwsApi'
    inputs:
      Service: ec2
      Api: RunInstances
      ImageId: '{{ getparameter.ImageId }}'
      MaxCount: 1
      MinCount: 1
    outputs:
      - Name: InstanceId
        Selector: '$.Instances[0].InstanceId'
        Type: String

AWS CLI에서 문자열 유형 매개변수 참조하기

AWS CLI에서 시스템 관리자 매개변수를 참조하는 것은 명령 문서에서 매개변수를 참조하는 것과 유사합니다. 문자열 유형 매개변수는 ssm:parameter-name으로 참조할 수 있습니다. 보안 문자열 매개변수의 경우 먼저 매개변수의 암호를 해독해야 합니다. 그런 다음 AWS CLI 명령에서 파라미터를 사용할 수 있습니다.

AWS CLI에서 파라미터를 참조하는 예는 파라미터 실행(AWS CLI)를 참조하세요.

AWS 공식
AWS 공식업데이트됨 8달 전
댓글 없음