Class: Jets::Cfn::Builders::ApiDeploymentBuilder
- Inherits:
-
Object
- Object
- Jets::Cfn::Builders::ApiDeploymentBuilder
- Includes:
- AwsServices, Interface
- Defined in:
- lib/jets/cfn/builders/api_deployment_builder.rb
Instance Method Summary collapse
-
#add_base_path_mapping ⇒ Object
Because Jets generates a new timestamped logical id for the API Deployment resource it also creates a new root base path mapping and fails.
-
#compose ⇒ Object
compose is an interface method.
-
#initialize(options = {}) ⇒ ApiDeploymentBuilder
constructor
A new instance of ApiDeploymentBuilder.
-
#template_path ⇒ Object
template_path is an interface method.
-
#write ⇒ Object
do not bother writing a template if routes are empty.
Methods included from AwsServices
#apigateway, #aws_lambda, #cfn, #dynamodb, #logs, #s3, #s3_resource, #sns, #sqs, #sts
Methods included from AwsServices::StackStatus
#lookup, #stack_exists?, #stack_in_progress?
Methods included from AwsServices::GlobalMemoist
Methods included from Interface
#add_description, #add_output, #add_outputs, #add_parameter, #add_parameters, #add_resource, #add_resources, #add_template_resource, #build, #post_process_template, #template, #text
Constructor Details
#initialize(options = {}) ⇒ ApiDeploymentBuilder
Returns a new instance of ApiDeploymentBuilder.
6 7 8 9 |
# File 'lib/jets/cfn/builders/api_deployment_builder.rb', line 6 def initialize(={}) @options = @template = ActiveSupport::HashWithIndifferentAccess.new(Resources: {}) end |
Instance Method Details
#add_base_path_mapping ⇒ Object
Because Jets generates a new timestamped logical id for the API Deployment resource it also creates a new root base path mapping and fails. Additionally, the base path mapping depends on the API Deploy for the stage name.
We resolve this by using a custom resource that does an in-place update.
Note, also tried to change the domain name of to something like demo-dev-.mydomain.com but that does not work because the domain name has to match the route53 record exactly.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/jets/cfn/builders/api_deployment_builder.rb', line 30 def add_base_path_mapping return unless Jets.custom_domain? function = Jets::Resource::ApiGateway::BasePath::Function.new add_resource(function) add_outputs(function.outputs) mapping = Jets::Resource::ApiGateway::BasePath::Mapping.new add_resource(mapping) add_outputs(mapping.outputs) iam_role = Jets::Resource::ApiGateway::BasePath::Role.new add_resource(iam_role) add_outputs(iam_role.outputs) end |
#compose ⇒ Object
compose is an interface method
12 13 14 15 16 17 18 19 |
# File 'lib/jets/cfn/builders/api_deployment_builder.rb', line 12 def compose deployment = Jets::Resource::ApiGateway::Deployment.new add_resource(deployment) add_parameters(deployment.parameters) add_outputs(deployment.outputs) add_base_path_mapping end |
#template_path ⇒ Object
template_path is an interface method
47 48 49 |
# File 'lib/jets/cfn/builders/api_deployment_builder.rb', line 47 def template_path Jets::Naming.api_deployment_template_path end |