AWS IoTポリシーが削除できない事象に対処した話

AWS IoTポリシーが削除できない事象に遭遇したので対処した際の話となります。
2019.12.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、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)

マネジメントコンソールから削除しようとしても同様のエラーとなります。

スクリーンショット 2019-12-26 14.03.53.png

解決

原因は、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

おわりに

本エラーについてはググってもほとんど情報は出てきませんが、エラー内容をよく読めば原因が書いてあるため対処はしやすかったです。

以上