자습서: 태그를 사용하여 중지할 Aurora DB 클러스터 지정
개발 환경이나 테스트 환경에서 여러 Aurora DB 클러스터를 생성한다고 가정합니다. 며칠 동안 이러한 클러스터를 모두 유지해야 합니다. 어떤 클러스터는 밤새 테스트를 실행합니다. 또 다른 클러스터는 밤새 중단하고 다음 날 다시 시작할 수 있습니다. 다음 예제에서는 밤새 중단하기에 적합한 클러스터에 태그를 할당하는 방법을 보여줍니다. 그런 다음 이 예제에서는 스크립트가 해당 태그가 있는 클러스터를 감지한 후 해당 클러스터를 중지하는 방법을 보여줍니다. 이 예제에서 키-값 쌍의 값 부분은 중요하지 않습니다. stoppable
태그가 있다는 것은 클러스터에 이 사용자 정의 속성이 있음을 의미합니다.
중지할 Aurora DB 클러스터를 지정하려면
-
중지 가능으로 지정하려는 클러스터의 ARN을 결정합니다.
태그 지정을 위한 명령 및 API는 ARN과 함께 작동합니다. 이렇게 하면 AWS 리전, AWS 계정 및 동일한 짧은 이름을 가질 수 있는 다양한 유형의 리소스 간에 원활하게 작동할 수 있습니다. 클러스터에서 작동하는 CLI 명령에서 클러스터 ID 대신 ARN을 지정할 수 있습니다. 사용자 클러스터의 이름을
dev-test-cluster
로 대체합니다. ARN 파라미터를 사용하는 후속 명령에서, 사용자 클러스터의 ARN을 대체합니다. ARN에는 사용자의 AWS 계정 ID와 클러스터가 위치한 AWS 리전의 이름이 포함되어 있습니다.$
aws rds describe-db-clusters --db-cluster-identifierdev-test-cluster
\ --query "*[].{DBClusterArn:DBClusterArn}" --output textarn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
-
stoppable
태그를 이 클러스터에 추가합니다.이 태그의 이름은 사용자가 선택합니다. 이 방법을 사용하면 모든 관련 정보를 이름에 인코딩하는 명명 규칙을 만드는 것을 피할 수 있습니다. 이러한 규칙 하에서는 DB 인스턴스 이름 또는 다른 리소스의 이름에 정보를 인코딩할 수 있습니다. 이 예제에서는 태그를 있거나 없는 속성으로 취급하기 때문에
Value=
파라미터의--tags
일부를 생략합니다.$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
\ --tags Key=stoppable -
태그가 클러스터에 있는지 확인합니다.
이러한 명령은 클러스터에 대한 태그 정보를 JSON 형식 및 탭으로 구분된 일반 텍스트로 검색합니다.
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
--output textTAGLIST stoppable
-
stoppable
(으)로 지정된 모든 클러스터를 중지하려면 모든 클러스터 목록을 준비합니다. 목록을 반복하고 각 클러스터에 관련 속성으로 태그가 지정되어 있는지 확인합니다.이 Linux 예제에서는 셸 스크립팅을 사용하여 클러스터 ARN 목록을 임시 파일에 저장한 후 각 클러스터에 대해 CLI 명령을 수행합니다.
$
aws rds describe-db-clusters --query "*[].[DBClusterArn]" --output text >/tmp/cluster_arns.lst$
for arn in $(cat /tmp/cluster_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep 'TAGLIST\tstoppable')" if [[ ! -z "$match" ]] then echo "Cluster $arn is tagged as stoppable. Stopping it now." # Note that you can specify the full ARN value as the parameter instead of the short ID 'dev-test-cluster'. aws rds stop-db-cluster --db-cluster-identifier $arn fi doneCluster arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster is tagged as stoppable. Stopping it now. { "DBCluster": { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-1e", "us-east-1c", "us-east-1d" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "dev-test-cluster", ...
매일 일과가 끝날 때 이와 같은 스크립트를 실행하여 불필요한 클러스터가 중지되도록 할 수 있습니다. 매일 밤 이러한 검사를 수행하기 위해 cron
등의 유틸리티를 사용하여 작업을 예약할 수도 있습니다. 예를 들어, 일부 클러스터가 실수로 실행 중으로 남아 있지 않도록 하려면 검사를 예약하면 됩니다. 이때 검사할 클러스터 목록을 준비하는 명령을 세부 조정할 수 있습니다.
다음 명령은 클러스터 목록을 생성하지만 available
상태에 있는 클러스터만 생성합니다. 스크립트는 이미 중지된 클러스터를 무시할 수 있습니다. 이러한 클러스터는 stopped
또는 stopping
등 상태 값이 다르기 때문입니다.
$
aws rds describe-db-clusters \ --query '*[].{DBClusterArn:DBClusterArn,Status:Status}|[?Status == `available`]|[].{DBClusterArn:DBClusterArn}' \ --output textarn:aws:rds:us-east-1:123456789:cluster:cluster-2447 arn:aws:rds:us-east-1:123456789:cluster:cluster-3395 arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster arn:aws:rds:us-east-1:123456789:cluster:pg2-cluster
작은 정보
태그를 할당하고 해당 태그가 있는 클러스터를 찾는 기능을 사용하여 다른 방법으로 비용을 줄일 수 있습니다. 개발 및 테스트에 사용되는 Aurora DB 클러스터를 예로 들어 보겠습니다. 여기서 일과가 끝날 때 일부 클러스터를 삭제하도록 지정하거나 해당 클러스터의 리더 DB 인스턴스만 삭제하도록 지정할 수도 있습니다. 또는 사용량이 낮을 것으로 예상되는 시기에 DB 인스턴스를 소규모 DB 인스턴스 클래스로 변경하도록 지정할 수 있습니다.