zalando-stups / senza

Deploy immutable application stacks and create and execute AWS CloudFormation templates in a sane way
https://pypi.python.org/pypi/stups-senza
Other
96 stars 72 forks source link

resolve_ssl_certificates for ACM: KeyError: 'CreatedAt' #461

Closed hjacobs closed 7 years ago

hjacobs commented 7 years ago
cat /tmp/senza-traceback-28v30ylh
Traceback (most recent call last):
  File "/usr/lib/python3.5/site-packages/senza/error_handling.py", line 105, in __call__
    self.function(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.5/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/senza/cli.py", line 580, in create
    data = create_cf_template(definition, region, version, parameter, force, parameter_file)
  File "/usr/lib/python3.5/site-packages/senza/cli.py", line 669, in create_cf_template
    data = evaluate(definition.copy(), args, account_info, force)
  File "/usr/lib/python3.5/site-packages/senza/cli.py", line 237, in evaluate
    definition = componentfn(definition, configuration, args, info, force, account_info)
  File "/usr/lib/python3.5/site-packages/senza/components/weighted_dns_elastic_load_balancer.py", line 49, in component_weighted_dns_elastic_load_balancer
    account_info)
  File "/usr/lib/python3.5/site-packages/senza/components/elastic_load_balancer.py", line 135, in component_elastic_load_balancer
    listeners = resolve_ssl_certificates(listeners, subdomain, main_zone, account_info)
  File "/usr/lib/python3.5/site-packages/senza/components/elastic_load_balancer.py", line 95, in resolve_ssl_certificates
    ssl_cert = get_ssl_cert(subdomain, main_zone, listener, account_info)
  File "/usr/lib/python3.5/site-packages/senza/components/elastic_load_balancer.py", line 52, in get_ssl_cert
    reverse=True)
  File "/usr/lib/python3.5/site-packages/senza/manaus/acm.py", line 178, in get_certificates
    certificate = ACMCertificate.get_by_arn(self.region, arn)
  File "/usr/lib/python3.5/site-packages/senza/manaus/acm.py", line 110, in get_by_arn
    return cls.from_boto_dict(certificate)
  File "/usr/lib/python3.5/site-packages/senza/manaus/acm.py", line 84, in from_boto_dict
    created_at = certificate['CreatedAt']
KeyError: 'CreatedAt'

Imported certs don't have CreatedAt:

>>> c.describe_certificate(CertificateArn='arn:aws:acm:eu-central-1:123456789012:certificate/f14f9718-7da8-4250-9c21-d0341da4e44f')
{'Certificate': {'NotAfter': datetime.datetime(2017, 5, 7, 10, 0, tzinfo=tzlocal()), 'SubjectAlternativeNames': ['pierone.stups.zalan.do', 'registry.opensource.zalan.do'], 'Subject': 'C=DE,L=Berlin,O=Zalando SE,OU=CDP,CN=CDP Proxy', 'Serial': '2a:d2:f6:d3:23:62:0b:5f:f8:2f:d6:3a:4a:9f:b8:c6:48:a0:11:62', 'Type': 'IMPORTED', 'ImportedAt': datetime.datetime(2017, 4, 7, 10, 12, 55, tzinfo=tzlocal()), 'SignatureAlgorithm': 'SHA256WITHRSA', 'CertificateArn': 'arn:aws:acm:eu-central-1:123456789012:certificate/f14f9718-7da8-4250-9c21-d0341da4e44f', 'NotBefore': datetime.datetime(2017, 4, 7, 10, 0, tzinfo=tzlocal()), 'DomainValidationOptions': [{'DomainName': 'pierone.stups.zalan.do'}, {'DomainName': 'registry.opensource.zalan.do'}], 'Status': 'ISSUED', 'DomainName': 'pierone.stups.zalan.do', 'Issuer': 'Zalando SE', 'InUseBy': [], 'KeyAlgorithm': 'RSA-2048'}, 'ResponseMetadata': {'HTTPHeaders': {'content-type': 'application/x-amz-json-1.1', 'x-amzn-requestid': '514a08ad-1b71-11e7-91d6-c5bca103e8f9', 'date': 'Fri, 07 Apr 2017 09:05:16 GMT', 'content-length': '695'}, 'RequestId': '514a08ad-1b71-11e7-91d6-c5bca103e8f9', 'HTTPStatusCode': 200, 'RetryAttempts': 0}}