github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/website/source/docs/providers/aws/r/iam_server_certificate.html.markdown (about) 1 --- 2 layout: "aws" 3 page_title: "AWS: aws_iam_server_certificate" 4 sidebar_current: "docs-aws-resource-iam-server-certificate" 5 description: |- 6 Provides an IAM Server Certificate 7 --- 8 9 # aws\_iam\_server\_certificate 10 11 Provides an IAM Server Certificate resource to upload Server Certificates. 12 Certs uploaded to IAM can easily work with other AWS services such as: 13 14 - AWS Elastic Beanstalk 15 - Elastic Load Balancing 16 - CloudFront 17 - AWS OpsWorks 18 19 For information about server certificates in IAM, see [Managing Server 20 Certficates][2] in AWS Documentation. 21 22 ## Example Usage 23 24 **Using certs on file:** 25 26 ``` 27 resource "aws_iam_server_certificate" "test_cert" { 28 name = "some_test_cert" 29 certificate_body = "${file("self-ca-cert.pem")}" 30 private_key = "${file("test-key.pem")}" 31 } 32 ``` 33 34 **Example with cert in-line:** 35 36 ``` 37 resource "aws_iam_server_certificate" "test_cert_alt" { 38 name = "alt_test_cert" 39 certificate_body = <<EOF 40 -----BEGIN CERTIFICATE----- 41 [......] # cert contents 42 -----END CERTIFICATE----- 43 EOF 44 45 private_key = <<EOF 46 -----BEGIN RSA PRIVATE KEY----- 47 [......] # cert contents 48 -----END CERTIFICATE----- 49 EOF 50 } 51 ``` 52 53 **Use in combination with an AWS ELB resource:** 54 55 ``` 56 resource "aws_iam_server_certificate" "test_cert" { 57 name = "some_test_cert" 58 certificate_body = "${file("self-ca-cert.pem")}" 59 private_key = "${file("test-key.pem")}" 60 } 61 62 resource "aws_elb" "ourapp" { 63 name = "terraform-asg-deployment-example" 64 availability_zones = ["us-west-2a"] 65 cross_zone_load_balancing = true 66 67 listener { 68 instance_port = 8000 69 instance_protocol = "http" 70 lb_port = 443 71 lb_protocol = "https" 72 ssl_certificate_id = "${aws_iam_server_certificate.test_cert.arn}" 73 } 74 } 75 ``` 76 77 ## Argument Reference 78 79 The following arguments are supported: 80 81 * `name` - (Required) The name of the Server Certificate. Do not include the 82 path in this value. 83 * `certificate_body` – (Required) The contents of the public key certificate in 84 PEM-encoded format. 85 * `certificate_chain` – (Optional) The contents of the certificate chain. 86 This is typically a concatenation of the PEM-encoded public key certificates 87 of the chain. 88 * `private_key` – (Required) The contents of the private key in PEM-encoded format. 89 * `path` - (Optional) The IAM path for the server certificate. If it is not 90 included, it defaults to a slash (/). If this certificate is for use with 91 AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. 92 See [IAM Identifiers][1] for more details on IAM Paths. 93 94 ~> **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in terraform forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificate_body` contains only one certificate. All other certificates should go in `certificate_chain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. 95 96 ## Attributes Reference 97 98 * `id` - The unique Server Certificate name 99 * `name` - The name of the Server Certificate 100 * `arn` - The Amazon Resource Name (ARN) specifying the server certificate. 101 102 103 [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html 104 [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html