Skip to content

Import resources into a stack #742

@iainelder

Description

@iainelder

I want to deploy a template like this to manage the default event bus with logging:

Resources:
  EventBus:
    DeletionPolicy: Retain
    Type: AWS::Events::EventBus
    Properties:
      Name: default
      LogConfig:
        Level: TRACE
        IncludeDetail: FULL

  LogGroup:
    DeletionPolicy: Retain
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: /aws/vendedlogs/events/event-bus/default
      RetentionInDays: 90

In this case the default event bus always exists and its vended log group might exist. CloudFormation can auto-import existing resources for a CreateChangeSet (doc) (news). But I can't just use Rain because it doesn't seem to support this feature yet.

Instead I need to use a Bash script like this to use the CloudFormation APIs on the first run:

if ! aws cloudformation describe-stacks --stack-name default-event-bus; then
    aws cloudformation create-change-set \
      --stack-name "default-event-bus" \
      --template-body file://default-event-bus.cfn.yaml \
      --change-set-name "init" \
      --change-set-type "CREATE" \
      --import-existing-resources

    aws cloudformation wait change-set-create-complete \
      --stack-name "default-event-bus" \
      --change-set-name "init"

    aws cloudformation execute-change-set \
      --stack-name "default-event-bus" \
      --change-set-name "init"

    aws cloudformation wait stack-create-complete \
      --stack-name "default-event-bus"
fi

rain deploy --yes default-event-bus.cfn.yaml default-event-bus

That script is going to look the same any time I need to use this import feature, so it would be great if Rain could just handle this automatically in the rain deploy command. If there's a good reason that it shouldn't be the default behavior then maybe a new rain deploy --import-existing-resources option could handle it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions