AWSSDK Plugin

The AWSSDK plugin enables you to use Cloudify to manage Cloud resources on AWS. The currently supported resource types are described below.

AWS Authentication

Each node template, has a client_config property which stores your account credentials. Use an intrinsic function to assign these to the values of secrets](/working_with/manager/using-secrets/) in your manager.

  my_vpc:
    type: cloudify.nodes.aws.ec2.Vpc
    properties:
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: { get_secret: aws_region_name }
      resource_config:
        CidrBlock: '10.0.0.0/16'
 

Node Type Lifecycle Operations

The AWSSDK plugin maps Cloudify plugin node type lifecycle operations to AWSSDK API calls.

Most node types follow the following lifecycle: interfaces: cloudify.interfaces.lifecycle: start:

Common Properties

All AWSSDK Plugin nodes types these properties in common:

Properties

Basic Example

The following example node template creates a VM using the node type cloudify.nodes.aws.ec2.Instances.

Based on the documentation for that node type, note that the resource_config is based on the boto method run_instances.

You should provide all the arguments that you want in the kwargs dictionary.

  host:
    type: cloudify.nodes.aws.ec2.Instances
    properties:
      agent_config:
        network: { get_input: manager_network }
        install_method: init_script
        user: { get_input: agent_user }
        key: { get_secret: agent_key_private }
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
      resource_config:
        kwargs:
          MaxCount: 1
          MinCount: 1
          ImageId: { get_input: ami }
          InstanceType: { get_input: instance_type }
          BlockDeviceMappings:
          - DeviceName: '/dev/sda1'
            Ebs:
              DeleteOnTermination: True
          Placement:
            AvailabilityZone: us-west-1b
          UserData: |
            #!/bin/bash
            echo "hello world"
          NetworkInterfaces:
          - NetworkInterfaceId: { get_attribute: [nic , aws_resource_id ] }
            DeviceIndex: 0
    relationships:
      - type: cloudify.relationships.depends_on
        target: nic
 

Some nodes types have special behaviors when they have a relationship to another node type. These will be noted below where relavent.

Node Types

cloudify.nodes.aws.iam.User

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_user

cloudify.nodes.aws.s3.BucketTagging

Derived from node type: cloudify.nodes.Root.

AWS SDK method: S3:put_bucket_tagging

cloudify.nodes.aws.ec2.Interface

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_network_interface

Example Connecting Elastic IP to NIC

  ip:
    type: cloudify.nodes.aws.ec2.ElasticIP
    properties:
      resource_config:
        kwargs:
          Domain: 'vpc'
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.depends_on
      target: nic

  nic:
    type: cloudify.nodes.aws.ec2.Interface
    properties:
      client_config: *client_config
      resource_config:
        kwargs:
          Description: nic-and-eip-pair
          SubnetId: subnet-12345678
          Groups:
          - sg-12345678

cloudify.nodes.aws.ec2.Vpc

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_vpc

cloudify.nodes.aws.efs.FileSystemTags

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EFS:create_tags

cloudify.nodes.aws.rds.OptionGroup

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:create_option_group

cloudify.nodes.aws.cloudwatch.Alarm

Derived from node type: cloudify.nodes.Root.

AWS SDK method: CloudWatch:put_metric_alarm

cloudify.nodes.aws.iam.InstanceProfile

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_instance_profile

cloudify.nodes.aws.elb.Classic.HealthCheck

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancing:configure_health_check

cloudify.nodes.aws.iam.Policy

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_policy

cloudify.nodes.aws.elb.LoadBalancer

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancingv2:create_load_balancer

cloudify.nodes.aws.rds.Parameter

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:modify_db_parameter_group

cloudify.nodes.aws.iam.Role

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_role

cloudify.nodes.aws.autoscaling.Policy

Derived from node type: cloudify.nodes.Root.

AWS SDK method: AutoScaling:put_scaling_policy

cloudify.nodes.aws.ec2.VpcPeeringRejectRequest

Derived from node type: cloudify.nodes.aws.ec2.VpcPeeringRequest.

cloudify.nodes.aws.ec2.RouteTable

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_route_table

Interfaces - cloudify.interfaces.lifecycle.create: Store resource config parameters. - cloudify.interfaces.lifecycle.configure: Create the route table. - cloudify.interfaces.lifecycle.start: Perform attachment to cloudify.nodes.aws.ec2.Subnet node type target of cloudify.relationships.connected_to relationship type. - cloudify.interfaces.lifecycle.stop: Perform detach from subnet. - cloudify.interfaces.lifecycle.delete: Delete route table.

Example

  routetable:
    type: cloudify.nodes.aws.ec2.RouteTable
    properties:
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.connected_to
      target: subnet

  subnet:
    type: cloudify.nodes.aws.ec2.Subnet
    properties:
      resource_config:
        kwargs:
          CidrBlock: { get_input: subnet_cidr }
          AvailabilityZone: { get_input: availability_zone }
          VpcId: { get_input: vpc_id }
      client_config: *client_config

cloudify.nodes.aws.ECS.Cluster

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ECS:create_cluster

cloudify.nodes.aws.autoscaling.Group

Derived from node type: cloudify.nodes.Root.

AWS SDK method: AutoScaling:create_auto_scaling_group

Example

  autoscaling_lifecycle_hook:
    type: cloudify.nodes.aws.autoscaling.LifecycleHook
    properties:
      resource_config:
        kwargs:
          AutoScalingGroupName: { get_property: [ autoscaling_group, resource_config, kwargs, AutoScalingGroupName ] }
          LifecycleHookName: my-autoscaling-hook
          LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.depends_on
      target: autoscaling_group

  autoscaling_group:
    type: cloudify.nodes.aws.autoscaling.Group
    properties:
      resource_config:
        kwargs:
          AutoScalingGroupName: my-autoscaling-group
          MinSize: 1
          MaxSize: 1
          DefaultCooldown: 300
          LaunchConfigurationName: { get_property: [launch_configuration, resource_config, kwargs, LaunchConfigurationName ] }
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.depends_on
      target: launch_configuration

  launch_configuration:
    type: cloudify.nodes.aws.autoscaling.LaunchConfiguration
    properties:
      resource_config:
        kwargs:
          LaunchConfigurationName: my-launch-config
          ImageId: { get_input: ami }
      client_config: *client_config

cloudify.nodes.aws.iam.RolePolicy

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:put_role_policy

cloudify.nodes.aws.rds.Instance

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:create_db_instance

cloudify.nodes.aws.iam.LoginProfile

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_login_profile

cloudify.nodes.aws.ec2.ElasticIP

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:allocate_address

cloudify.nodes.aws.ec2.Subnet

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_subnet

Example

  vpc:
    type: cloudify.nodes.aws.ec2.Vpc
    properties:
      resource_config:
        kwargs:
          CidrBlock: { get_input: vpc_cidr }
      client_config: *client_config

  public_subnet:
    type: cloudify.nodes.aws.ec2.Subnet
    properties:
      resource_config:
        kwargs:
          CidrBlock: { get_input: public_subnet_cidr }
          AvailabilityZone: { get_input: availability_zone }
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.depends_on
      target: vpc

cloudify.nodes.aws.cloudwatch.Event

Derived from node type: cloudify.nodes.Root.

AWS SDK method: CloudWatchEvents:put_events

cloudify.nodes.aws.ec2.EBSVolume

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_volume

Example

  volume:
    type: cloudify.nodes.aws.ec2.EBSVolume
    properties:
      resource_config:
        kwargs:
          AvailabilityZone: { get_input: availability_zone }
          Size: 6
          TagSpecifications:
          - ResourceType: volume
            Tags:
            - Key: First
              Value: First Volume
            - Key: Second
              Value: Second Volume
      client_config: *client_config

  volume_attachment:
    type: cloudify.nodes.aws.ec2.EBSAttachment
    properties:
      resource_config:
        kwargs:
          Device: /dev/sdh
          InstanceId: { get_input: instance_id }
          VolumeId: { get_attribute: [ volume, aws_resource_id ] }
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.depends_on
      target: ebs_volume

cloudify.nodes.aws.dynamodb.Table

Derived from node type: cloudify.nodes.Root.

AWS SDK method: DynamoDB:create_table

cloudify.nodes.aws.s3.BucketLifecycleConfiguration

Derived from node type: cloudify.nodes.Root.

AWS SDK method: S3:put_bucket_lifecycle

cloudify.nodes.aws.efs.FileSystem

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EFS:create_file_system

cloudify.nodes.aws.s3.BucketPolicy

Derived from node type: cloudify.nodes.Root.

AWS SDK method: S3:put_bucket_policy

cloudify.nodes.aws.ec2.VPNConnectionRoute

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_vpn_connection_route

cloudify.nodes.aws.SQS.Queue

Derived from node type: cloudify.nodes.Root.

AWS SDK method: SQS:create_queue

cloudify.nodes.aws.SNS.Subscription

Derived from node type: cloudify.nodes.Root.

AWS SDK method: SNS:get_subscription_attributes

Example

  subscription:
    type: cloudify.nodes.aws.SNS.Subscription
    properties:
      client_config: *client_config
      resource_config:
        kwargs:
          Protocol: sqs
          Endpoint: queue # Should match the target node name of a relationship if it is not arn.
    relationships:
      - type: cloudify.relationships.depends_on
        target: topic
      - type: cloudify.relationships.depends_on
        target: queue

  topic:
    type: cloudify.nodes.aws.SNS.Topic
    properties:
      resource_config:
        kwargs:
          Name: TestCloudifyTopic
      client_config: *client_config

  queue:
    type: cloudify.nodes.aws.SQS.Queue
    properties:
      resource_config:
        kwargs:
          QueueName: test-queue
          Attributes:
            Policy: |
              {
                "Version": "2012-10-17",
                "Statement": [
                  {
                    "Sid": "Sid1",
                    "Effect": "Allow",
                    "Principal": "*",
                    "Action": [
                      "SQS:SendMessage",
                      "SQS:ReceiveMessage"
                    ],
                    "Resource": "test-queue"
                  }
                ]
              }
            MessageRetentionPeriod: '86400'
            VisibilityTimeout: '180'
      client_config: *client_config

cloudify.nodes.aws.ec2.VPNGateway

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_vpn_gateway

cloudify.nodes.aws.ec2.VPNConnection

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_vpn_connection

cloudify.nodes.aws.ec2.Instances

Derived from node type: cloudify.nodes.Compute.

AWS SDK method: EC2:run_instances

Connecting a VM to a subnet

In addition to specifying a SubnetId in your resource_config:kwargs, you can also provide a relationship to a node template of type cloudify.nodes.aws.ec2.Subnet:

  host:
    type: cloudify.nodes.aws.ec2.Instances
    properties:
      agent_config:
        user: { get_input: agent_user }
        key: { get_secret: agent_key_private }
      resource_config:
        kwargs:
          ImageId: ami-012345678
          InstanceType: m3.medium
          BlockDeviceMappings:
          - DeviceName: '/dev/sda1'
            Ebs:
              DeleteOnTermination: True
          Placement:
            AvailabilityZone: us-west-1b
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
    relationships:
      - type: cloudify.relationships.depends_on
        target: my_subnet

  my_subnet:
    type: cloudify.nodes.aws.ec2.Subnet
    properties:
      resource_config:
        kwargs:
          CidrBlock: 10.0.0.0/16
          AvailabilityZone: us-west-1b
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
    relationships:
    - type: cloudify.relationships.depends_on
      target: vpc
 

Connecting a VM to a NIC

In addition to specifying a NetworkInterfaceId in your resource_config:kwargs, you can also provide a relationship to a node template of type cloudify.nodes.aws.ec2.Interface:

  host:
    type: cloudify.nodes.aws.ec2.Instances
    properties:
      agent_config:
        user: { get_input: agent_user }
        key: { get_secret: agent_key_private }
      resource_config:
        kwargs:
          ImageId: ami-012345678
          InstanceType: m3.medium
          BlockDeviceMappings:
          - DeviceName: '/dev/sda1'
            Ebs:
              DeleteOnTermination: True
          Placement:
            AvailabilityZone: us-west-1b
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
    relationships:
      - type: cloudify.relationships.depends_on
        target: my_nic

  my_nic:
    type: cloudify.nodes.aws.ec2.Interface
    properties:
      resource_config:
        kwargs:
          Description: My NIC.
          SubnetId: us-west-1b
          Groups:
          - sg-012345678
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
    relationships:
    - type: cloudify.relationships.depends_on
      target: my_subnet
 

Connecting a VM to a security group

In addition to specifying a SecurityGroups list in your resource_config:kwargs, you can also provide a relationship to a node template of type cloudify.nodes.aws.ec2.SecurityGroup:

  host:
    type: cloudify.nodes.aws.ec2.Instances
    properties:
      agent_config:
        user: { get_input: agent_user }
        key: { get_secret: agent_key_private }
      resource_config:
        kwargs:
          ImageId: ami-012345678
          InstanceType: m3.medium
          BlockDeviceMappings:
          - DeviceName: '/dev/sda1'
            Ebs:
              DeleteOnTermination: True
          Placement:
            AvailabilityZone: us-west-1b
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
    relationships:
      - type: cloudify.relationships.depends_on
        target: my_security_group

  my_security_group:
    type: cloudify.nodes.aws.ec2.SecurityGroup
    properties:
      resource_config:
        kwargs:
          GroupName: MyGroup
          Description: My Grroup.
          VpcId: vpc-012345678
      client_config:
        aws_access_key_id: { get_secret: aws_access_key_id }
        aws_secret_access_key: { get_secret: aws_secret_access_key }
        region_name: us-west-1
    relationships:
    - type: cloudify.relationships.depends_on
      target: vpc
 

cloudify.nodes.aws.ec2.VpcPeeringRequest

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:reject_vpc_peering_connection

cloudify.nodes.aws.lambda.Function

Derived from node type: cloudify.nodes.Root.

AWS SDK method: Lambda:create_function

cloudify.nodes.aws.elb.Classic.Policy.Stickiness

Derived from node type: cloudify.nodes.aws.elb.Classic.Policy.

AWS SDK method: [:]()

cloudify.nodes.aws.lambda.Invoke

Derived from node type: cloudify.nodes.Root.

AWS SDK method: Lambda:invoke

cloudify.nodes.aws.rds.InstanceReadReplica

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:create_db_instance_read_replica

cloudify.nodes.aws.ec2.NetworkACL

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_network_acl

cloudify.nodes.aws.ec2.SecurityGroupRuleEgress

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:authorize_security_group_egress

cloudify.nodes.aws.ec2.Route

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_route

Example

  internet_gateway:
    type: cloudify.nodes.aws.ec2.InternetGateway
    properties:
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.connected_to
      target: vpc

  subnet:
    type: cloudify.nodes.aws.ec2.Subnet
    properties:
      resource_config:
        kwargs:
          CidrBlock: { get_input: subnet_cidr }
          AvailabilityZone: { get_input: availability_zone }
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.depends_on
      target: vpc
    - type: cloudify.relationships.depends_on
      target: internet_gateway

  routetable:
    type: cloudify.nodes.aws.ec2.RouteTable
    properties:
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.contained_in
      target: vpc
    - type: cloudify.relationships.connected_to
      target: subnet

  internet_gateway_route:
    type: cloudify.nodes.aws.ec2.Route
    properties:
      resource_config:
        kwargs:
          DestinationCidrBlock: '0.0.0.0/0'
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.contained_in
      target: routetable
    - type: cloudify.relationships.connected_to
      target: internet_gateway
    interfaces:
      cloudify.interfaces.lifecycle:
        stop: {}

cloudify.nodes.aws.elb.Listener

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancingv2:create_listener

cloudify.nodes.aws.rds.Option

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:modify_option_group

cloudify.nodes.aws.ec2.Image

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_image

cloudify.nodes.aws.elb.Classic.LoadBalancer

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancing:create_load_balancer

cloudify.nodes.aws.ec2.EBSAttachment

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:attach_volume

cloudify.nodes.aws.route53.HostedZone

Derived from node type: cloudify.nodes.Root.

AWS SDK method: Route53:create_hosted_zone

cloudify.nodes.aws.ec2.NetworkAclEntry

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_network_acl_entry

cloudify.nodes.aws.lambda.Permission

Derived from node type: cloudify.nodes.Root.

AWS SDK method: Lambda:add_permission

cloudify.nodes.aws.cloudwatch.Rule

Derived from node type: cloudify.nodes.Root.

AWS SDK method: CloudWatchEvents:put_rule

cloudify.nodes.aws.rds.ParameterGroup

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:create_db_parameter_group

cloudify.nodes.aws.SNS.Topic

Derived from node type: cloudify.nodes.Root.

AWS SDK method: SNS:create_topic

cloudify.nodes.aws.CloudFormation.Stack

Derived from node type: cloudify.nodes.Root.

AWS SDK method: CloudFormation:create_stack

Example with Template URL

  wordpress_example:
    type: cloudify.nodes.aws.CloudFormation.Stack
    properties:
      resource_config:
        kwargs:
          StackName: WordpressExample
          Parameters:
          - ParameterKey: KeyName
            ParameterValue: { get_input: key_name }
          - ParameterKey: DBPassword
            ParameterValue: { get_secret: database_password }
          - ParameterKey: DBUser
            ParameterValue: { get_input: database_username }
          - ParameterKey: DBRootPassword
            ParameterValue: { get_secret: database_root_password }
          TemplateURL: https://s3.eu-central-1.amazonaws.com/cloudformation-templates-eu-central-1/WordPress_Single_Instance.template
      client_config: *client_config

Example with Template Body

  HelloBucket:
    type: cloudify.nodes.aws.CloudFormation.Stack
    properties:
      resource_config:
        kwargs:
          StackName: { get_input: bucket_stack_name }
          TemplateBody:
            AWSTemplateFormatVersion: "2010-09-09"
            Description: S3 HelloBucket
            Resources:
              HelloBucket:
                Type: AWS::S3::Bucket
                Properties:
                  AccessControl: PublicRead
                  WebsiteConfiguration:
                    IndexDocument: index.html
                    ErrorDocument: error.html
      client_config: *client_config

cloudify.nodes.aws.ec2.VpcPeering

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_vpc_peering_connection

cloudify.nodes.aws.iam.Group

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_group

cloudify.nodes.aws.ec2.CustomerGateway

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_customer_gateway

cloudify.nodes.aws.ec2.SecurityGroup

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_security_group

cloudify.nodes.aws.s3.Bucket

Derived from node type: cloudify.nodes.Root.

AWS SDK method: S3:create_bucket

Example

  bucket:
    type: cloudify.nodes.aws.s3.Bucket
    properties:
      resource_config:
        kwargs:
          ACL: public-read-write
          Bucket: awssdk-test-bucket
          CreateBucketConfiguration:
            LocationConstraint: { get_input: aws_region_name }
      client_config: *client_config

cloudify.nodes.aws.ECS.Service

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ECS:create_service

cloudify.nodes.aws.elb.Classic.Listener

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancing:create_load_balancer_listeners

cloudify.nodes.aws.kms.Grant

Derived from node type: cloudify.nodes.Root.

AWS SDK method: KMS:create_grant

cloudify.nodes.aws.autoscaling.LifecycleHook

Derived from node type: cloudify.nodes.Root.

AWS SDK method: AutoScaling:put_lifecycle_hook

cloudify.nodes.aws.route53.RecordSet

Derived from node type: cloudify.nodes.Root.

AWS SDK method: Route53:change_resource_record_sets

Example

  update_record:
    type: cloudify.nodes.aws.route53.RecordSet
    properties:
      client_config: *client_config
      resource_config:
        kwargs:
          Action: UPSERT
          ResourceRecordSet:
            Name: staging.example.org
            Type: TXT
            TTL: 60
            ResourceRecords:
            - Value: { get_input: staging_ip }
    relationships:
    - type: cloudify.relationships.aws.route53.record_set.connected_to
      target: example_org_zone
    - type: cloudify.relationships.depends_on
      target: create_record

  create_record:
    type: cloudify.nodes.aws.route53.RecordSet
    properties:
      client_config: *client_config
      resource_config:
        kwargs:
          Action: CREATE
          ResourceRecordSet:
            Name: dev.example.org
            Type: TXT
            TTL: 60
            ResourceRecords:
            - Value: { get_input: dev_ip }
    relationships:
    - type: cloudify.relationships.aws.route53.record_set.connected_to
      target: example_org_zone

  example_org_zone:
    type: cloudify.nodes.aws.route53.HostedZone
    properties:
      resource_id: example.org
      client_config: *client_config
      resource_config:
        kwargs:
          HostedZoneConfig:
            Comment: Created by Cloudify
            PrivateZone: true
          VPC:
            VPCId: { get_input: vpc_id }
            VPCRegion: { get_input aws_region_name}

cloudify.nodes.aws.autoscaling.LaunchConfiguration

Derived from node type: cloudify.nodes.Root.

AWS SDK method: AutoScaling:create_launch_configuration

cloudify.nodes.aws.elb.Rule

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancingv2:create_rule

cloudify.nodes.aws.ec2.Keypair

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_key_pair

cloudify.nodes.aws.iam.AccessKey

Derived from node type: cloudify.nodes.Root.

AWS SDK method: IAM:create_access_key

cloudify.nodes.aws.cloudwatch.Target

Derived from node type: cloudify.nodes.Root.

AWS SDK method: CloudWatchEvents:put_targets

cloudify.nodes.aws.efs.MountTarget

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EFS:create_mount_target

cloudify.nodes.aws.autoscaling.NotificationConfiguration

Derived from node type: cloudify.nodes.Root.

AWS SDK method: AutoScaling:put_notification_configuration

cloudify.nodes.aws.kms.CustomerMasterKey

Derived from node type: cloudify.nodes.Root.

AWS SDK method: KMS:create_key

cloudify.nodes.aws.rds.SubnetGroup

Derived from node type: cloudify.nodes.Root.

AWS SDK method: RDS:create_db_subnet_group

cloudify.nodes.aws.ec2.Tags

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_tags

cloudify.nodes.aws.ec2.DHCPOptions

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_dhcp_options

cloudify.nodes.aws.ec2.SecurityGroupRuleIngress

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:authorize_security_group_ingress

Example

  ssh_security_group:
    type: cloudify.nodes.aws.ec2.SecurityGroup
    properties:
      resource_config:
        kwargs:
          GroupName: SSHGroup
          Description: SSH Group.
          VpcId: { get_input: vpc }
      client_config: *client_config

  security_group_rules:
    type: cloudify.nodes.aws.ec2.SecurityGroupRuleIngress
    properties:
      client_config: *client_config
      resource_config:
        kwargs:
          IpPermissions:
          - IpProtocol: tcp
            FromPort: 22
            ToPort: 22
            IpRanges:
            - CidrIp: 0.0.0.0/0
    relationships:
    - type: cloudify.relationships.contained_in
      target: ssh_security_group

cloudify.nodes.aws.ec2.InternetGateway

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_internet_gateway

Example

  vpc:
    type: cloudify.nodes.aws.ec2.Vpc
    properties:
      resource_config:
        kwargs:
          CidrBlock: { get_input: vpc_cidr }
      client_config: *client_config

  internet_gateway:
    type: cloudify.nodes.aws.ec2.InternetGateway
    properties:
      client_config: *client_config
    relationships:
    - type: cloudify.relationships.connected_to
      target: vpc

cloudify.nodes.aws.elb.Classic.Policy

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancing:create_load_balancer_policy

cloudify.nodes.aws.ec2.NATGateway

Derived from node type: cloudify.nodes.Root.

AWS SDK method: EC2:create_nat_gateway

cloudify.nodes.aws.kms.Alias

Derived from node type: cloudify.nodes.Root.

AWS SDK method: KMS:create_alias

cloudify.nodes.aws.elb.TargetGroup

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ElasticLoadBalancingv2:create_target_group

cloudify.nodes.aws.ECS.TaskDefinition

Derived from node type: cloudify.nodes.Root.

AWS SDK method: ECS:register_task_definition