AWS IoTポリシーが削除できない事象に対処した話
こんにちは、CX事業本部の若槻です。
作成したAWS IoTポリシーが削除できない事象に遭遇したので対処した際の話となります。
事象
下記のように不要になったIoTポリシーをAWS CLIコマンドで削除しようとすると、DeleteConflictException
エラーとなり削除ができませんでした。
$ aws iot delete-policy --policy-name TestPolicy
An error occurred (DeleteConflictException) when calling the DeletePolicy operation: The policy cannot be deleted as versions other than than default version exist (name=TestPolicy)
マネジメントコンソールから削除しようとしても同様のエラーとなります。
解決
原因は、IoTポリシーのポリシードキュメントの修正を行っていたため、ポリシーの過去バージョンが存在していたためでした。
削除したいポリシーのバージョンを確認してみると、最新の"versionId": "2"
のほかに"versionId": "1"
のバージョンがありました。
$ aws iot list-policy-versions --policy-name TestPolicy
{
"policyVersions": [
{
"versionId": "2",
"isDefaultVersion": true,
"createDate": 1577336482.783
},
{
"versionId": "1",
"isDefaultVersion": false,
"createDate": 1577336482.783
}
]
}
対処としては、"isDefaultVersion": false
のバージョンをすべて削除します。
$ aws iot delete-policy-version --policy-name TestPolicy --policy-version-id 1
存在しているバージョンが"isDefaultVersion": true
のバージョンのみとなったため、IoTポリシー自体を削除することができました。
$ aws iot delete-policy --policy-name TestPolicy
おわりに
本エラーについてはググってもほとんど情報は出てきませんが、エラー内容をよく読めば原因が書いてあるため対処はしやすかったです。
以上