# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You # may not use this file except in compliance with the License. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. module AWS class IAM # A collection that provides access to IAM server certificates # belonging to this account. # # iam = AWS::IAM.new # certificates = iam.server_certificates # # == Uploading A Server Certificate # # You can upload any valid, signed certificate using {#upload}. # # certificates.upload(:name => "MyCert", # :certificate_body => my_certificate_body, # :private_key => my_private_key) # # For information about generating a server certificate for use # with IAM, see # {http://docs.amazonwebservices.com/IAM/latest/UserGuide/InstallCert.html # Creating and Uploading Server Certificates} in Using AWS # Identity and Access Management. # # == Getting a Server Certificate by Name # # You can get a reference to a server certificate using array notation: # # certificate = certificates['MyCert'] # # == Enumerating Server Certificates # # Server certificate collections can also be used to enumerate # certificates: # # certificates.each do |cert| # puts cert.name # end # # You can limit the certificates returned by passing a +:prefix+ # option to any of the enumerator methods. When you pass a # prefix, only the certificates whose paths start with the given # string will be returned. class ServerCertificateCollection include Collection::WithPrefix # Uploads a server certificate entity for the AWS account. The # server certificate entity includes a public key certificate, a # private key, and an optional certificate chain, which should # all be PEM-encoded. # # @param [Hash] options Options for uploading the certificate. # +:name+, +:certificate_body+, and +:private_key+ are # required. # # @option options [String] :certificate_body The contents of the # public key certificate in PEM-encoded format. # # @option options [String] :name The name for the server # certificate. Do not include the path in this value. # # @option options [String] :path The path for the server # certificate. For more information about paths, see # {http://docs.amazonwebservices.com/IAM/latest/UserGuide/index.html?Using_Identifiers.html # Identifiers for IAM Entities} in Using AWS Identity and # Access Management. # # @option options [String] :private_key The contents of the # private key in PEM-encoded format. # # @option options [String] :certificate_chain The contents of # the certificate chain. This is typically a concatenation of # the PEM-encoded public key certificates of the chain. # # @return [ServerCertificate] The newly created server # certificate. def create options = {} client_opts = options.dup client_opts[:server_certificate_name] = client_opts.delete(:name) if path = client_opts[:path] client_opts[:path] = "/#{path}/". sub(%r{^//}, "/"). sub(%r{//$}, "/") end resp = client.upload_server_certificate(client_opts) ServerCertificate.new( resp[:server_certificate_metadata][:server_certificate_name], :config => config) end alias_method :upload, :create # Returns a reference to the server certificate with the given # name: # # certificate = iam.server_certificates['MyCert'] # # @param [String] name Name of the server certificate. # # @return [ServerCertificate] Returns a reference to the named # server certificate. def [] name ServerCertificate.new(name, :config => config) end # @private protected def each_item response, &block response.server_certificate_metadata_list.each do |sc| certificate = ServerCertificate.new_from(:list_server_certificates, sc, sc.server_certificate_name, :config => config) yield(certificate) end end end end end