Edited at

[JAWS-UG CLI] AWS Batch #4 環境の破棄

More than 1 year has passed since last update.


前提条件


EC2への権限

EC2、ECS、AWS Batch などに対してフル権限があること。


0. 準備


0.1. より実践的な使い方の完了

AWS Batch #3 より実践的な使い方 が終わっていること


0.2. 変数の確認

#1, #2, #3 から引き続き利用する変数を確認します


コマンド

cat << ETX

CFN_STACK_NAME: ${CFN_STACK_NAME}
COMPUTE_ENV_NAME:
${COMPUTE_ENV_NAME}
JOB_QUEUE_NAME:
${JOB_QUEUE_NAME}
JOB_DEFINITION_NAME:
${JOB_DEFINITION_NAME}

CONRAINER_PROPS_FILE: ${CONRAINER_PROPS_FILE}
DOCKER_ENTRYPOINT_FILE:
${DOCKER_ENTRYPOINT_FILE}
DOCKER_FILE:
${DOCKER_FILE}
DOCKER_REPO:
${DOCKER_REPO}
S3_BUCKET_NAME:
${S3_BUCKET_NAME}

Managed 編のみ
BATCH_RESOURCES_FILE: ${BATCH_RESOURCES_FILE}

ETX



結果(例)


CFN_STACK_NAME: aws-batch-xxxxxxxxxx
COMPUTE_ENV_NAME: aws-batch-managed-xxxxxxxxxx
JOB_QUEUE_NAME: aws-batch-job-queue-xxxxxxxxxx
JOB_DEFINITION_NAME: aws-batch-job-def-xxxxxxxxxx

CONRAINER_PROPS_FILE: aws_batch_container_props.json
DOCKER_ENTRYPOINT_FILE: entrypoint.sh
DOCKER_FILE: Dockerfile
DOCKER_REPO: xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/aws-batch-xxxxxxxxxx/sample
S3_BUCKET_NAME: aws-batch-xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxx

Managed 編のみ
BATCH_RESOURCES_FILE: aws_batch_compute_resources.json



0.3. AWS CLIのバージョン

以下のバージョンで動作確認済


  • AWS CLI 1.11.36


コマンド

aws --version



結果(例)

 aws-cli/1.11.36 Python/2.7.5 Darwin/13.4.0 botocore/1.4.93


バージョンが古い場合は最新版に更新しましょう。


コマンド

sudo -H pip install -U awscli



0.4. AWS アカウントの属性

EC2-Classic が見えない AWS アカウントであること。


コマンド

AWS_SUPPORT_PLATFORMS=$( \

aws ec2 describe-account-attributes \
--query 'AccountAttributes[?AttributeName == `supported-platforms`].AttributeValues[].AttributeValue' \
--output text \
) && echo ${AWS_SUPPORT_PLATFORMS}


結果

 VPC



1. リソースの削除


1.1. 定義ファイルの削除


コマンド

rm -f ${CFN_STACK_NAME}.yaml \

${CFN_STACK_NAME}-ecs.yaml ${CFN_STACK_NAME}-job.yaml \
${CONRAINER_PROPS_FILE} ${BATCH_RESOURCES_FILE} \
${DOCKER_ENTRYPOINT_FILE} ${DOCKER_FILE}


1.2. ジョブ投入スタックの削除


コマンド

aws cloudformation delete-stack \

--stack-name ${CFN_STACK_NAME}-job

削除が完了するまで待機します


コマンド

aws cloudformation wait stack-delete-complete \

--stack-name ${CFN_STACK_NAME}-job


1.3. ジョブ投入のための残リソース削除


  • ECR リポジトリの削除


コマンド

aws ecr delete-repository --force \

--repository-name $( aws ecr describe-repositories \
| jq '.repositories' \
| jq "map(select(.repositoryUri==\"${DOCKER_REPO}\"))" \
| jq -r '.[].repositoryName' )


結果(例)

{

"repository": {
"registryId": "xxxxxxxxxxxx",
"repositoryName": "aws-batch-xxxxxxxxxx/sample",
"repositoryArn": "arn:aws:ecr:us-east-1:xxxxxxxxxxxx:repository/aws-batch-xxxxxxxxxx/sample",
"createdAt": 1488376409.0,
"repositoryUri": "xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/aws-batch-xxxxxxxxxx/sample"
}
}


  • ローカルにある Docker イメージの削除


コマンド

docker rmi ${DOCKER_REPO}



結果

Untagged: xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/aws-batch-xxxxxxxxxx/sample:latest

Untagged: xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/aws-batch-xxxxxxxxxx/sample@sha256:be2fbdefdbfb6b08e6298333e857aa138d293d5804b77ddd61a6145900538f27
Deleted: sha256:a4c9ee04eaea67d8a2c5dc4815b8e9d2d3f064eb48d991eba110c6bd0a4f93d2
Deleted: sha256:81f188eeecd0e2755eef4252aec9248e8d75a67b3d2b637a444e3179eaf27a9a
Deleted: sha256:6a3b014a68b4ce0acd84decd60f5e77c09f0c620fdb123891f2650eb7c3b51d9


  • CloudWatch Logs ロググループの削除


コマンド

for group in batch/job lambda/BatchJobTriggerResource

do
aws logs delete-log-group \
--log-group-name /aws/${group}
done


結果

返り値なし



  • 結果格納用 S3 バケット

    (CloudFormation スタックとして生成したものの、オブジェクトがあるときれいに消えないためここで削除します)


コマンド

aws s3 rb s3://${S3_BUCKET_NAME} --force



結果

返り値なし



  • ローカルにダウンロードした帳票ファイル


コマンド

rm ./result-*



結果

返り値なし



1.4. ジョブ定義の無効化


コマンド

for arn in $( aws batch describe-job-definitions \

--job-definition-name ${JOB_DEFINITION_NAME} \
--status ACTIVE \
--query 'jobDefinitions[].jobDefinitionArn' \
--output text)
do
aws batch deregister-job-definition \
--job-definition $arn
done


結果

返り値なし



1.5. ジョブキューの削除

ジョブキューを削除するには、まずキューを無効化します。


コマンド

aws batch update-job-queue \

--job-queue ${JOB_QUEUE_NAME} \
--state DISABLED


結果(例)

{

"jobQueueArn": "arn:aws:batch:us-east-1:xxxxxxxxxxxx:job-queue/aws-batch-job-queue-xxxxxxxxxx",
"jobQueueName": "aws-batch-job-queue-xxxxxxxxxx"
}

その上で削除します


コマンド

aws batch delete-job-queue --job-queue ${JOB_QUEUE_NAME}



結果

返り値なし


[ 重要!!]

AWS Batch にはまだ wait コマンドがなく不便なのですが、

順序よく消さないと INVALID な状態となりリソースが消せない

可能性があります。なので、確実に消えたことを確かめます。


コマンド

aws batch describe-job-queues --job-queues ${JOB_QUEUE_NAME}



結果

{

"jobQueues": []
}


1.6. ECS クラスタの削除

(Unmanaged 編のみ)


コマンド

aws cloudformation delete-stack \

--stack-name ${CFN_STACK_NAME}-ecs

削除が完了するまで待機します


コマンド

aws cloudformation wait stack-delete-complete \

--stack-name ${CFN_STACK_NAME}-ecs


1.7. コンピューティング環境の削除

コンピューティング環境も、削除するにはまず無効化が必要です。


コマンド

aws batch update-compute-environment \

--compute-environment ${COMPUTE_ENV_NAME} \
--state DISABLED


結果(例)

{

"computeEnvironmentName": "aws-batch-refarch",
"computeEnvironmentArn": "arn:aws:batch:us-east-1:xxxxxxxxxxxx:compute-environment/aws-batch-refarch"
}

その上で削除します


コマンド

aws batch delete-compute-environment \

--compute-environment ${COMPUTE_ENV_NAME}


結果

返り値なし


[ 重要!!] しばらく待ち、こちらも正常に消えたことを確認します。


コマンド

aws batch describe-compute-environments \

--compute-environments ${COMPUTE_ENV_NAME}


結果

{

"computeEnvironments": []
}


1.8. VPC や IAM の削除


コマンド

aws cloudformation delete-stack \

--stack-name ${CFN_STACK_NAME}


結果

返り値なし


削除が完了するまで待機します


コマンド

aws cloudformation wait stack-delete-complete \

--stack-name ${CFN_STACK_NAME}


完了

お疲れさまでした