ACM
AWS Certificate Manager — request / import / export / revoke certificates, tags, account configuration. JSON 1.1 protocol.
fakecloud implements AWS Certificate Manager's full JSON 1.1 control plane: 17 operations covering certificate lifecycle, import/export, tags, and account-wide expiry events. 100% Smithy conformance.
Status: 100% control-plane coverage.
Supported today
- Public certificate lifecycle —
RequestCertificateacceptsDomainName,SubjectAlternativeNames,ValidationMethod(DNS / EMAIL),IdempotencyToken,KeyAlgorithm,Options,CertificateAuthorityArn,ManagedBy,Tags. The certificate lands atPENDING_VALIDATIONwithType = AMAZON_ISSUED. Idempotency: a request re-issued with the sameIdempotencyToken+DomainName+ SANs returns the sameCertificateArn.DescribeCertificatereturns the fullCertificateDetailincluding domain validation, options, key usages, ARN, status, validity window.GetCertificatereturns deterministic placeholder PEM strings for the cert + chain.ListCertificatessupportsMaxItems+NextToken+CertificateStatuses+Includes.keyTypes.SearchCertificateshonorsFilterStatement.Filter.KeyTypes(And/Or/Not composition is parsed but ignored).DeleteCertificaterejects withResourceInUseExceptionwhileInUseByis non-empty. - Imported certificates —
ImportCertificateaccepts the PEM cert + private key + optional chain (base64-encoded over the wire), stores them, and flipsStatustoISSUEDwithType = IMPORTED. Passing an existingCertificateArnre-imports in place (the cert must already beIMPORTED).ExportCertificaterequires aPassphrase, returns the stored cert + chain + private key. Imported certs are not eligible forRevokeCertificate(InvalidParameterException) orRenewCertificate. - Renewal + revocation —
RenewCertificate(AMAZON_ISSUED only) bumpsNotBefore/NotAfterby 13 months and flips status toISSUED.RevokeCertificaterequiresRevocationReason, setsStatus = REVOKEDand stampsRevokedAt. - Email validation —
ResendValidationEmailis only valid whenValidationMethod = EMAIL; DNS-validated certs returnInvalidParameterException. - Tags —
AddTagsToCertificateupserts tags by key,RemoveTagsFromCertificatedeletes by key (optionally also matching value),ListTagsForCertificatereturns the tag set sorted by key for deterministic test output. - Account configuration —
PutAccountConfigurationacceptsIdempotencyToken+ExpiryEvents.DaysBeforeExpiry;GetAccountConfigurationreturns it back. - Certificate options —
UpdateCertificateOptionsupdatesCertificateTransparencyLoggingPreferenceandExport.
Smoke test
fakecloud &
ARN=$(aws --endpoint-url http://localhost:4566 acm request-certificate \
--domain-name api.example.com \
--validation-method DNS \
--query CertificateArn --output text)
aws --endpoint-url http://localhost:4566 acm describe-certificate \
--certificate-arn "$ARN"
aws --endpoint-url http://localhost:4566 acm add-tags-to-certificate \
--certificate-arn "$ARN" \
--tags Key=env,Value=prod
aws --endpoint-url http://localhost:4566 acm list-tags-for-certificate \
--certificate-arn "$ARN"Caveats
fakecloud does not run the real X.509 validation pipeline. Certificates requested via RequestCertificate stay at PENDING_VALIDATION until you call RenewCertificate; the synthesized DNS validation ResourceRecord is deterministic per domain but is never observed by a real ACM validator. ImportCertificate does not parse the input X.509 cert — it stores the bytes verbatim and uses the cheap CN= substring scan to extract DomainName. ExportCertificate returns the imported cert as-is when one exists or a placeholder PEM otherwise; the passphrase is required but not used to encrypt the output. KeyUsages and ExtendedKeyUsages reported by DescribeCertificate are constants (DIGITAL_SIGNATURE + KEY_ENCIPHERMENT, TLS server + client auth) — fakecloud does not extract them from imported certs.