id:kizashi1122 です。 今日はさらっと Tips を。
aws の ecr のライフサイクルポリシーをコマンドでみたいなと思ったときはこうすると思います。
aws ecr get-lifecycle-policy --repository-name <reponame>
すると json で返ってきます。これを jq でフォーマットするとしたら、
aws ecr get-lifecycle-policy --repository-name <reponame> | jq
とすればよいです。アウトプットは、
{ "registryId": "<acccount id>", "repositoryName": "<reponame>", "lifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Keep last 30 images for build\",\"selection\":{\"tagStatus\":\"tagged\",\"tagPrefixList\":[\"foo-\"],\"countType\":\"imageCountMoreThan\",\"countNumber\":30},\"action\":{\"type\":\"expire\"}},{\"rulePriority\":2,\"description\":\"Keep last 30 images for released\",\"selection\":{\"tagStatus\":\"tagged\",\"tagPrefixList\":[\"bar-\"],\"countType\":\"imageCountMoreThan\",\"countNumber\":30},\"action\":{\"type\":\"expire\"}},{\"rulePriority\":3,\"description\":\"Keep last 10 images of untagged\",\"selection\":{\"tagStatus\":\"untagged\",\"countType\":\"imageCountMoreThan\",\"countNumber\":10},\"action\":{\"type\":\"expire\"}}]}", "lastEvaluatedAt": "2022-03-07T01:14:24+09:00" }
こうなります。
lifecyclePolicyText
は json の文字列ですがエスケープされまくりで見にくいです。このjsonをフォーマットして見たい場合もあると思います。
どうすればよいでしょう。
こうします。
aws ecr get-lifecycle-policy --repository-name <reponame> | jq '.lifecyclePolicyText' | jq '. | fromjson'
すると意図通り、
{ "rules": [ { "rulePriority": 1, "description": "Keep last 30 images for build", "selection": { "tagStatus": "tagged", "tagPrefixList": [ "foo-" ], "countType": "imageCountMoreThan", "countNumber": 30 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Keep last 30 images for released", "selection": { "tagStatus": "tagged", "tagPrefixList": [ "bar-" ], "countType": "imageCountMoreThan", "countNumber": 30 }, "action": { "type": "expire" } }, { "rulePriority": 3, "description": "Keep last 10 images of untagged", "selection": { "tagStatus": "untagged", "countType": "imageCountMoreThan", "countNumber": 10 }, "action": { "type": "expire" } } ] }
のように表示されます。
見やすいですね!