aws acm list-certificates とは

aws acm list-certificates はAWS Certificate Manager(ACM)に登録されている証明書の一覧を取得するコマンド。証明書ごとのドメイン名やステータス、有効期限などをまとめて確認できる。

$ aws acm list-certificates --region us-east-1
{
    "CertificateSummaryList": [
        {
            "CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
            "DomainName": "example.com",
            "Status": "ISSUED",
            "Type": "AMAZON_ISSUED",
            "InUse": true,
            "NotBefore": "2025-09-15T09:00:00+09:00",
            "NotAfter": "2026-10-14T08:59:59+09:00"
        },
        {
            "CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/ffffffff-1111-2222-3333-444444444444",
            "DomainName": "*.example.com",
            "Status": "ISSUED",
            "Type": "AMAZON_ISSUED",
            "InUse": true,
            "NotBefore": "2025-07-20T09:00:00+09:00",
            "NotAfter": "2026-08-05T08:59:59+09:00"
        }
    ]
}

ACMはリージョナルサービスであるため、--region で対象リージョンを指定する必要がある。特にCloudFrontで使う証明書は us-east-1 に作成する決まりがあるため、リージョンを取り違えると証明書が見つからない。

–query で必要なフィールドのみ取得する

--query オプションでドメイン名と有効期限だけに絞り込むと一覧性が高まる。

$ aws acm list-certificates \
  --region us-east-1 \
  --query 'CertificateSummaryList[].{Domain:DomainName,NotAfter:NotAfter,Status:Status}' \
  --output table
-------------------------------------------------------
|                  ListCertificates                   |
+-------------+-----------------------------+---------+
|   Domain    |          NotAfter           | Status  |
+-------------+-----------------------------+---------+
|  example.com |  2026-10-14T08:59:59+09:00 |  ISSUED |
| *.example.com|  2026-08-05T08:59:59+09:00 |  ISSUED |
+-------------+-----------------------------+---------+

有効期限が近い証明書のみ絞り込む

--query の式だけで日付を比較するのは難しいため、jq と組み合わせるとよい。以下は30日以内に有効期限が切れる証明書のみ抽出する例である。

$ aws acm list-certificates --region us-east-1 --output json \
  | jq -r --arg threshold "$(date -u -d '+30 days' +%Y-%m-%dT%H:%M:%S)" \
    '.CertificateSummaryList[] | select(.NotAfter < $threshold) | [.DomainName, .NotAfter] | @tsv'
*.example.com	2026-08-05T08:59:59+09:00

NotAfter はISO 8601形式の文字列であり、文字列比較でも日付の前後を判定できる。date -u -d '+30 days' で30日後の日時を同じ形式で生成し、しきい値として利用している。なお -d オプションはGNU date(Linux)の書式であり、macOS標準のBSD dateでは date -u -v+30d と指定する。

ACMが発行した証明書は自動更新される。ただし、DNS検証のCNAMEレコードが削除されているなどの理由で更新に失敗する場合もある。定期的にこのコマンドを実行し、有効期限の近い証明書がないか確認しておくと安心である。

RenewalStatus で自動更新の状況を確認する

describe-certificate を使うと、DNS検証の状態を含めた自動更新の状況まで確認できる。証明書の発行者やシリアル番号、利用中のリソースなど、より詳細な情報の確認方法は 【AWS CLI】ACM証明書の詳細情報をCLIで確認する を参照。

$ aws acm describe-certificate \
  --region us-east-1 \
  --certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/ffffffff-1111-2222-3333-444444444444 \
  --query 'Certificate.RenewalSummary'
{
    "RenewalStatus": "PENDING_AUTO_RENEWAL",
    "DomainValidationOptions": [
        {
            "DomainName": "*.example.com",
            "ValidationDomain": "*.example.com",
            "ValidationStatus": "SUCCESS",
            "ResourceRecord": {
                "Name": "_1234567890abcdef1234567890abcdef.example.com.",
                "Type": "CNAME",
                "Value": "_abcdef1234567890abcdef1234567890.xxxxxxxxxx.acm-validations.aws."
            },
            "ValidationMethod": "DNS"
        }
    ],
    "UpdatedAt": "2026-06-05T09:00:00+09:00"
}

RenewalStatusFAILED になっている場合は、DNS検証レコードの状態を確認する必要がある。