Fugue Transcriber

Fugue Transcriber (currently in Preview) is a command-line tool that scans your AWS account for existing infrastructure and generates a Ludwig composition representing your resources.

Currently, Transcriber works best with accounts that have less than 40 resources. If you have trouble generating a composition with a larger amount of resources, contact support@fugue.co.

Transcriber is packaged with the Fugue Client Tools. Create a Fugue account, if you haven’t already, to download the Fugue Client Tools from the Download Portal. Find installation instructions at the Fugue Quick Setup.

Note: If you prefer to work in a GUI, Fugue Composer has a “Generate Composition” feature that offers the same major options as the Transcriber command-line tool. Find more information at Fugue Composer.

Usage

fugue-transcriber [OPTIONS] OUT

Options

--region TEXT
Region value to substitute for AWS::Region.
-k | --tag-key TEXT
Limit scan to AWS resources that have this tag key. Use one of --tag-key or --tag-pair.
-p | --tag-pair TEXT...
Two arguments to limit scan to AWS resources that have this tag key and value. Example: --tag-pair Name my-vpc. Use one of --tag-key or --tag-pair.
-i | --include-service TEXT
Include only this service when querying the cloud. May be used more than once.
-x | --exclude-service TEXT
Exclude this service when querying the cloud. May be used more than once.
--include-fugue-resources
Include AWS resources that are managed by Fugue. (Excluded by default.)
--include-fugue-runtime
Include AWS resources that are part of the Fugue runtime. (Excluded by default.)
-q | --quiet
Quiet mode
--debug
Debug mode
-v | --version
Print the current version number and exit.
-l | --list-services
List services covered by Transcriber and exit.
-p | --server-port TEXT
Set the port number for the Fugue API Server. Use this option or FUGUE_API_PORT environment variable. Default is 8080.
-h | --help
Show help message and exit.

Definition

Transcriber generates Ludwig compositions from AWS account resources. Each resource declaration in the composition is preceded by a comment that indicates the type and ID of the resource that it represents.

By default, Transcriber ignores AWS resources that belong to the Fugue runtime. To include resources that are part of the Conductor, use --include-fugue-runtime.

By default, Transcriber uses the Fugue API Server, if available, to filter out Fugue-managed AWS resources. The server port number defaults to 8080, but a different port may be specified with the -p or --server-port option or with the $FUGUE_API_PORT environment variable. If the server is running and you wish to include resources managed by Fugue, use the option --include-fugue-resources. If no server is available, Transcriber includes Fugue-managed resources in the generated composition.

Transcriber scans the resources in the default AWS region, which is specified in your AWS CLI configuration file (usually located at ~/.aws/config on macOS or Linux or at C:\Users\USERNAME\.aws\config on Windows). To specify a different region, use the --region option. You can also use the aws configure command to update your default region.

Transcriber output is sent to OUT. For OUT, use a filename to save to that file or - to send results to standard output.

To view available services and for a list of valid services for the --include-service and --exclude-service options, use the -l or --list-services option.

Supported Services

Currently supported services include:

Name of service Usage for Transcriber
ASG AutoScaling Groups aws-autoscaling-autoscaling-groups
ASG AutoScaling Launch Configurations aws-autoscaling-launch-configurations
ASG AutoScaling Scaling Policies aws-autoscaling-scaling-policies
CloudFormation Stacks aws-cloudformation-stacks
CloudWatch Alarms aws-cloudwatch-alarms
DynamoDB Tables aws-dynamodb-tables
EC2 Customer Gateways aws-ec2-customer-gateways
EC2 DHCP Options aws-ec2-dhcpoptions
EC2 Elastic IPs aws-ec2-elastic-ip-addressess
EC2 Instances aws-ec2-instances
EC2 Internet Gateways aws-ec2-internet-gateways
EC2 Network ACLs aws-ec2-network-acls
EC2 Network Interfaces aws-ec2-network-interfaces
EC2 Route Tables aws-ec2-route-tables
EC2 Security Groups aws-ec2-security-groups
EC2 Subnets aws-ec2-subnets
EC2 Volumes aws-ec2-volumes
EC2 VPC Endpoints aws-ec2-vpc-endpoints
EC2 VPC Peering aws-ec2-vpc-peering-connections
EC2 VPCs aws-ec2-vpcs
EC2 VPN Connections aws-ec2-vpn-connections
EC2 VPN Gateways aws-ec2-vpn-gateways
ELB Load Balancers aws-elasticloadbalancing-loadbalancers
ELBv2 Load Balancers aws-elasticloadbalancing-loadbalancers
ELBv2 Target Groups aws-elasticloadbalancing-target-groups
IAM Instance Profiles aws-iam-instance-profiles
IAM Policies aws-iam-policies
IAM Roles aws-iam-roles
Lambda Aliases aws-lambda-aliases
Lambda Event Source Mappings aws-lambda-event-sources
Lambda Functions aws-lambda-functions
RDS Instances aws-rds-instances
RDS Subnet Groups aws-rds-subnet-groups
S3 Buckets aws-s3-buckets
SNS Subscriptions aws-sns-subscriptions
SNS Topics aws-sns-topics
SNS Queues aws-sqs-queues

More services are forthcoming.

Transcriber and AWS credentials

Transcriber scans the AWS account associated with the values of AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, if those environment variables are set. Otherwise, Transcriber scans the account associated with the default profile of the AWS CLI credentials file (generally located at ~/.aws/credentials).

To have Transcriber scan an account associated with a different profile, export the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables associated with the desired account.

Or, make another profile the default account by setting the AWS_DEFAULT_PROFILE environment variable:

$ export AWS_DEFAULT_PROFILE=user2

IAM Policies for Transcriber

The AWS credentials used to run Transcriber simply need read-only permissions for each AWS service to be scanned. The two IAM policies created when installing the Fugue Conductor are not used by Transcriber.

If you prefer, you may create a new IAM user to use with Transcriber. To do so, visit the IAM Management Console and select “Add user.” Enter a name, check the box to enable programmatic access, and select the read-only policies for the services you want Transcriber to scan. (For example, the AWS-managed policy AmazonEC2ReadOnlyAccess enables read-only access to EC2, and ReadOnlyAccess enables read-only access to all AWS services.)

Once you’ve created the user, download the auto-generated credentials and set them as described above. When you execute a Transcriber command, Transcriber will use the permissions associated with those credentials to scan your account.

Examples

Scanning a non-default region

Transcriber scans your default AWS region. If you’d like Transcriber to scan a different region, use the --region option. The example below scans the us-west-2 region and saves the output to composition.lw:

fugue-transcriber --region us-west-2 composition.lw

You’ll see output like this:

Transcriber starting...
Scanning in us-west-2 region.
  Checking for Fugue runtime resources........ none found
  Checking for Fugue API server............... not found
  Scanning AutoScaling Groups................. found 0
  Scanning AutoScaling Launch Configurations.. found 0
  Scanning AutoScaling Scaling Policies....... found 0
  Scanning CloudFormation Stacks.............. found 0
  Scanning CloudWatch Alarms.................. found 0
  Scanning DynamoDB Tables.................... found 0
  Scanning EC2 Customer Gateways.............. found 0
  Scanning EC2 DHCP Options................... found 2
  Scanning EC2 Elastic IP Addresses........... found 0
  Scanning EC2 Instances...................... found 0
  Scanning EC2 Internet Gateways.............. found 1
  Scanning EC2 Network ACLs................... found 2
  Scanning EC2 Network Interfaces............. found 0
  Scanning EC2 Route Tables................... found 2
  Scanning EC2 Security Groups................ found 2
  Scanning EC2 Subnets........................ found 3
  Scanning EC2 Volumes........................ found 0
  Scanning EC2 VPC Endpoints.................. found 0
  Scanning EC2 VPC Peering Connections........ found 0
  Scanning EC2 VPCs........................... found 2
  Scanning EC2 VPN Connections................ found 0
  Scanning EC2 VPN Gateways................... found 0
  Scanning ELB Load Balancers................. found 0
  Scanning ELB Target Groups.................. found 1
  Scanning IAM Instance Profiles.............. found 5
  Scanning IAM Policies....................... found 11
  Scanning IAM Roles.......................... found 10
  Scanning Lambda Aliases..................... found 0
  Scanning Lambda Event Sources............... found 0
  Scanning Lambda Functions................... found 0
  Scanning RDS Instances...................... found 0
  Scanning RDS Subnet Groups.................. found 0
  Scanning S3 Buckets......................... found 1
  Scanning SNS Subscriptions.................. found 0
  Scanning SNS Topics......................... found 0
  Scanning SQS Queues......................... found 0

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
Ludwig written to file: composition.lw
------------------------------------------------------------
Transcriber complete.

And the generated composition, composition.lw, looks like this:

composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2
import Fugue.AWS.ELBv2 as ELBv2
import Fugue.AWS.IAM as IAM
import Fugue.AWS.S3 as S3
import Fugue.Core.AWS.EC2 as Core.EC2


############################################################
# Region
#   From local AWS setting: us-west-2
############################################################
region: AWS.Us-west-2


############################################################
# DHCP Options
#   Generated from AWS resource: dopt-175bb772
############################################################
ec2-dhcpoptions-1: EC2.DhcpOptions.new {
  domainName: "us-west-2.compute.internal",
  domainNameServers: [
    "AmazonProvidedDNS",
  ],
  region: region,
  resourceId: "dopt-175bb772",
}


############################################################
# DHCP Options
#   Generated from AWS resource: dopt-2d1a454b
############################################################
ec2-dhcpoptions-2: EC2.DhcpOptions.new {
  domainName: "us-west-2.compute.internal",
  domainNameServers: [
    "AmazonProvidedDNS",
  ],
  region: region,
  resourceId: "dopt-2d1a454b",
  tags: [
    AWS.tag("Application", "Hello World"),
  ],
}


############################################################
# InternetGateway
#   Generated from AWS resource: igw-dbd70cbe
############################################################
ec2-internetgateway-1: EC2.InternetGateway.new {
  region: region,
  resourceId: "igw-dbd70cbe",
  vpc: ec2-vpc-2,
}


[output trimmed for length]

(Output trimmed for length.)

Limiting results to resources with a specific tag key

If you want Transcriber to generate Ludwig only for resources tagged with a particular key, use the --tag-key or -k option. Transcriber uses this option to filter the results of the services scan. The example below searches for the tag key my-vpc and uses - to print to standard output:

fugue-transcriber --tag-key my-vpc -

You’ll see output like this:

Transcriber starting...
Scanning in us-east-1 region.
  Checking for Fugue runtime resources........ found
  Checking for Fugue API server............... not found
  Scanning AutoScaling Groups................. found 0
  Scanning AutoScaling Launch Configurations.. found 0
  Scanning AutoScaling Scaling Policies....... found 0
  Scanning CloudFormation Stacks.............. found 0
  Scanning CloudWatch Alarms.................. found 0
  Scanning DynamoDB Tables.................... found 0
  Scanning EC2 Customer Gateways.............. found 0
  Scanning EC2 DHCP Options................... found 0
  Scanning EC2 Elastic IP Addresses........... found 0
  Scanning EC2 Instances...................... found 0
  Scanning EC2 Internet Gateways.............. found 0
  Scanning EC2 Network ACLs................... found 0
  Scanning EC2 Network Interfaces............. found 0
  Scanning EC2 Route Tables................... found 0
  Scanning EC2 Security Groups................ found 0
  Scanning EC2 Subnets........................ found 0
  Scanning EC2 Volumes........................ found 0
  Scanning EC2 VPC Endpoints.................. found 0
  Scanning EC2 VPC Peering Connections........ found 0
  Scanning EC2 VPCs........................... found 1
  Scanning EC2 VPN Connections................ found 0
  Scanning EC2 VPN Gateways................... found 0
  Scanning ELB Load Balancers................. found 0
  Scanning ELB Target Groups.................. found 0
  Scanning IAM Instance Profiles.............. found 0
  Scanning IAM Policies....................... found 0
  Scanning IAM Roles.......................... found 0
  Scanning Lambda Aliases..................... found 0
  Scanning Lambda Event Sources............... found 0
  Scanning Lambda Functions................... found 0
  Scanning RDS Instances...................... found 0
  Scanning RDS Subnet Groups.................. found 0
  Scanning S3 Buckets......................... found 0
  Scanning SNS Subscriptions.................. found 0
  Scanning SNS Topics......................... found 0
  Scanning SQS Queues......................... found 0

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# VPC
#   Generated from AWS resource: vpc-abb72cd3
############################################################
ec2-vpc-1: EC2.Vpc.new {
  cidrBlock: "10.0.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec03ef89", region),
  enableDnsHostnames: False,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-abb72cd3",
  tags: [
    AWS.tag("Name", ""),
    AWS.tag("my-vpc", "My Awesome VPC"),
  ],
}


------------------------------------------------------------
Transcriber complete.

Limiting results to resources with a specific tag key-value pair

If you want Transcriber to generate Ludwig only for resources tagged with a particular key-value pair, use the --tag-pair or -p option. Transcriber uses this option to filter the results of the services scan. The example below searches for the tag key Name and tag value my-subnet, and uses - to print to standard output:

fugue-transcriber --tag-pair Name my-subnet -

You’ll see output like this:

Transcriber starting...
Scanning in us-east-1 region.
  Checking for Fugue runtime resources........ found
  Checking for Fugue API server............... not found
  Scanning AutoScaling Groups................. found 0
  Scanning AutoScaling Launch Configurations.. found 0
  Scanning AutoScaling Scaling Policies....... found 0
  Scanning CloudFormation Stacks.............. found 0
  Scanning CloudWatch Alarms.................. found 0
  Scanning DynamoDB Tables.................... found 0
  Scanning EC2 Customer Gateways.............. found 0
  Scanning EC2 DHCP Options................... found 0
  Scanning EC2 Elastic IP Addresses........... found 0
  Scanning EC2 Instances...................... found 0
  Scanning EC2 Internet Gateways.............. found 0
  Scanning EC2 Network ACLs................... found 0
  Scanning EC2 Network Interfaces............. found 0
  Scanning EC2 Route Tables................... found 0
  Scanning EC2 Security Groups................ found 0
  Scanning EC2 Subnets........................ found 1
  Scanning EC2 Volumes........................ found 0
  Scanning EC2 VPC Endpoints.................. found 0
  Scanning EC2 VPC Peering Connections........ found 0
  Scanning EC2 VPCs........................... found 0
  Scanning EC2 VPN Connections................ found 0
  Scanning EC2 VPN Gateways................... found 0
  Scanning ELB Load Balancers................. found 0
  Scanning ELB Target Groups.................. found 0
  Scanning IAM Instance Profiles.............. found 0
  Scanning IAM Policies....................... found 0
  Scanning IAM Roles.......................... found 0
  Scanning Lambda Aliases..................... found 0
  Scanning Lambda Event Sources............... found 0
  Scanning Lambda Functions................... found 0
  Scanning RDS Instances...................... found 0
  Scanning RDS Subnet Groups.................. found 0
  Scanning S3 Buckets......................... found 0
  Scanning SNS Subscriptions.................. found 0
  Scanning SNS Topics......................... found 0
  Scanning SQS Queues......................... found 0

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# Subnet
#   Generated from AWS resource: subnet-26751742
############################################################
ec2-subnet-1: EC2.Subnet.new {
  availabilityZone: AWS.B,
  cidrBlock: "10.0.0.0/24",
  defaultForAz: False,
  mapPublicIpOnLaunch: False,
  resourceId: "subnet-26751742",
  tags: [
    AWS.tag("Name", "my-subnet"),
  ],
  vpc: EC2.Vpc.external("vpc-abb72cd3", region),
}


------------------------------------------------------------
Transcriber complete.

Including only specific services in the results

To scan only certain AWS services, use the --include-service or -i option. It may be used multiple times in order to include multiple services. The following example limits Transcriber’s results to VPCs and subnets and saves the output to composition.lw:

fugue-transcriber -i aws-ec2-vpcs -i aws-ec2-subnets composition.lw

You’ll see output like this:

Transcriber starting...
Scanning in us-east-1 region.
  Checking for Fugue runtime resources........ found
  Checking for Fugue API server............... not found
  Scanning EC2 Subnets........................ found 7
  Scanning EC2 VPCs........................... found 3

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
Ludwig written to file: composition.lw
------------------------------------------------------------
Transcriber complete.

And the generated composition, composition.lw, looks like this:

composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# Subnet
#   Generated from AWS resource: subnet-40951d19
############################################################
ec2-subnet-1: EC2.Subnet.new {
  availabilityZone: AWS.A,
  cidrBlock: "172.31.16.0/20",
  defaultForAz: True,
  mapPublicIpOnLaunch: True,
  resourceId: "subnet-40951d19",
  vpc: ec2-vpc-3,
}


############################################################
# Subnet
#   Generated from AWS resource: subnet-a3b7ddd4
############################################################
ec2-subnet-2: EC2.Subnet.new {
  availabilityZone: AWS.D,
  cidrBlock: "172.31.0.0/20",
  defaultForAz: True,
  mapPublicIpOnLaunch: True,
  resourceId: "subnet-a3b7ddd4",
  vpc: ec2-vpc-3,
}

[output trimmed for length]

(Output trimmed for length.)

For a list of supported services and how to refer to them in Transcriber, see Supported Services.

Excluding specific services from the results

To exclude certain AWS services from Transcriber’s scan, use the --exclude-service or -x option. It may be used multiple times to exclude multiple services. The following example excludes VPCs and subnets from the scan results and saves the output to composition.lw:

fugue-transcriber -x aws-ec2-vpcs -x aws-ec2-subnets composition.lw

You’ll see output like this:

Transcriber starting...
Scanning in us-east-1 region.
  Checking for Fugue runtime resources........ found
  Checking for Fugue API server............... not found
  Scanning AutoScaling Groups................. found 0
  Scanning AutoScaling Launch Configurations.. found 0
  Scanning AutoScaling Scaling Policies....... found 0
  Scanning CloudFormation Stacks.............. found 0
  Scanning CloudWatch Alarms.................. found 8
  Scanning DynamoDB Tables.................... found 0
  Scanning EC2 Customer Gateways.............. found 0
  Scanning EC2 DHCP Options................... found 2
  Scanning EC2 Elastic IP Addresses........... found 0
  Scanning EC2 Instances...................... found 0
  Scanning EC2 Internet Gateways.............. found 1
  Scanning EC2 Network ACLs................... found 4
  Scanning EC2 Network Interfaces............. found 0
  Scanning EC2 Route Tables................... found 4
  Scanning EC2 Security Groups................ found 11
  Scanning EC2 Volumes........................ found 1
  Scanning EC2 VPC Endpoints.................. found 0
  Scanning EC2 VPC Peering Connections........ found 0
  Scanning EC2 VPN Connections................ found 0
  Scanning EC2 VPN Gateways................... found 0
  Scanning ELB Load Balancers................. found 0
  Scanning ELB Target Groups.................. found 0
  Scanning IAM Instance Profiles.............. found 5
  Scanning IAM Policies....................... found 11
  Scanning IAM Roles.......................... found 10
  Scanning Lambda Aliases..................... found 0
  Scanning Lambda Event Sources............... found 0
  Scanning Lambda Functions................... found 0
  Scanning RDS Instances...................... found 0
  Scanning RDS Subnet Groups.................. found 0
  Scanning S3 Buckets......................... found 2
  Scanning SNS Subscriptions.................. found 0
  Scanning SNS Topics......................... found 0
  Scanning SQS Queues......................... found 0

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
Ludwig written to file: composition.lw
------------------------------------------------------------
Transcriber complete.

And the generated composition, composition.lw, looks like this:

import Fugue.AWS.CloudWatch as CloudWatch
import Fugue.AWS.EC2 as EC2
import Fugue.AWS.IAM as IAM
import Fugue.AWS.S3 as S3
import Fugue.AWS.SNS as SNS
import Fugue.Core.AWS.EC2 as Core.EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# Alarm
#   Generated from AWS resource: arn:aws:cloudwatch:us-east-1:123456789012:alarm:test-table-ReadCapacityUnitsLimit-BasicAlarm
############################################################
cloudwatch-alarm-1: CloudWatch.Alarm.new {
  actionsEnabled: True,
  alarmActions: [
    CloudWatch.Action.notifyTopic(SNS.Topic.external("arn:aws:sns:us-east-1:123456789012:dynamodb")),
  ],
  comparisonOperator: CloudWatch.GreaterThanOrEqualToThreshold,
  dimensions: {
    "TableName": "test-table",
  },
  evaluationPeriods: 5,
  metricName: "ConsumedReadCapacityUnits",
  name: "test-table-ReadCapacityUnitsLimit-BasicAlarm",
  namespace: "AWS/DynamoDB",
  period: 60,
  region: region,
  resourceId: "arn:aws:cloudwatch:us-east-1:123456789012:alarm:test-table-ReadCapacityUnitsLimit-BasicAlarm",
  statistic: CloudWatch.Sum,
  threshold: 48.0,
}

[output trimmed for length]

(Output trimmed for length.)

For a list of supported services and how to refer to them in Transcriber, see Supported Services.

Include resources managed by Fugue

When you fugue run a composition, Fugue creates a process and manages the resources declared in the composition. Transcriber uses the Fugue API server to filter out Fugue-managed resources, if the server is available. If the server is up and you’d like Transcriber to include Fugue-managed resources in its scan, use the --include-fugue-resources option. The following example presumes the API server is running on the default port (8080), includes Fugue-managed resources, and, for simplicity, only scans VPCs. The - directs output to standard out.

fugue-transcriber --include-fugue-resources --include-service aws-ec2-vpcs -

Fugue happens to be running a process that created a VPC named exampleVpc, so because we used the --include-fugue-resources option, that VPC is included in the results:

Transcriber starting...
Scanning in us-east-1 region.
  Checking for Fugue runtime resources........ found
  Including Fugue-managed resources
  Scanning EC2 VPCs........................... found 2

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# VPC
#   Generated from AWS resource: vpc-fd62ff85
############################################################
ec2-vpc-1: EC2.Vpc.new {
  cidrBlock: "10.0.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec2f6895", region),
  enableDnsHostnames: False,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-fd62ff85",
  tags: [
    AWS.tag("Name", "exampleVpc"),
    AWS.tag("Application", "Fugue-managed resource"),
  ],
}


############################################################
# VPC
#   Generated from AWS resource: vpc-76f2ab13
############################################################
ec2-vpc-2: EC2.Vpc.new {
  cidrBlock: "172.31.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec03ef89", region),
  enableDnsHostnames: True,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-76f2ab13",
}


------------------------------------------------------------
Transcriber complete.

(Output trimmed for length.)

If the API server is still running and you run the same Transcriber command without --include-fugue-resources, you’ll see that exampleVpc is not included:

fugue-transcriber --include-service aws-ec2-vpcs -
Transcriber starting...
Scanning in us-east-1 region.
  Checking for Fugue runtime resources........ found
  Checking for Fugue API server............... found on port 8080
  Checking for Fugue managed resources........ found 7
  Scanning EC2 VPCs........................... found 1

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# VPC
#   Generated from AWS resource: vpc-76f2ab13
############################################################
ec2-vpc-1: EC2.Vpc.new {
  cidrBlock: "172.31.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec03ef89", region),
  enableDnsHostnames: True,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-76f2ab13",
}


------------------------------------------------------------
Transcriber complete.

Note: --include-fugue-resources only applies to resources tagged with a FID – resources that the Fugue Conductor creates as part of executing fugue run on a composition. --include-fugue-resources does not apply to the resources of the Fugue Conductor itself, which are included in the scan only if the --include-fugue-runtime option is set and the Conductor has been installed in the scanned region.

Including Fugue runtime resources

The Fugue Conductor has its own set of resources. If you’re scanning the region in which the Conductor has been installed, and you’d like to include the Fugue runtime resources, use the --include-fugue-runtime option. The following example scans the us-east-1 region, limits the results to VPCs, and sends the output to standard out:

fugue-transcriber --region us-east-1 -i aws-ec2-vpcs --include-fugue-runtime -

You’ll see output like this:

Transcriber starting...
Scanning in us-east-1 region.
  Including Fugue runtime resources
  Checking for Fugue API server............... not found
  Scanning EC2 VPCs........................... found 3

------------------------------------------------------------
Generating Ludwig...
------------------------------------------------------------
composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-east-1
############################################################
region: AWS.Us-east-1


############################################################
# VPC
#   Generated from AWS resource: vpc-fd62ff85
############################################################
ec2-vpc-1: EC2.Vpc.new {
  cidrBlock: "10.0.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec2f6895", region),
  enableDnsHostnames: False,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-fd62ff85",
  tags: [
    AWS.tag("Name", "exampleVpc"),
    AWS.tag("Application", "Fugue-managed resource"),
  ],
}


############################################################
# VPC
#   Generated from AWS resource: vpc-23fa035b
############################################################
ec2-vpc-2: EC2.Vpc.new {
  cidrBlock: "10.0.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec03ef89", region),
  enableDnsHostnames: True,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-23fa035b",
  tags: [
    AWS.tag("fugue-transcriber:aws:cloudformation:logical-id", "FugueVpc"),
    AWS.tag("Name", "Fugue Conductor VPC"),
    AWS.tag("fugue-transcriber:aws:cloudformation:stack-name", "fugue"),
    AWS.tag("fugue-transcriber:aws:cloudformation:stack-id", "arn:aws:cloudformation:us-east-1:141874191075:stack/fugue/fac2b4c0-aabb-11e7-8213-50faeaabf0d1"),
  ],
}


############################################################
# VPC
#   Generated from AWS resource: vpc-76f2ab13
############################################################
ec2-vpc-3: EC2.Vpc.new {
  cidrBlock: "172.31.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-ec03ef89", region),
  enableDnsHostnames: True,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-76f2ab13",
}


------------------------------------------------------------
Transcriber complete.

Note how ec2-vpc-2 has a tag value of Fugue Conductor VPC.

Suppressing Transcriber output

To suppress Transcriber output, run Transcriber in quiet mode with the --quiet or -q option. The following example turns on quiet mode, scans the us-west-2 region, limits the results to VPCs, and sends the output to standard out:

fugue-transcriber -q --region us-west-2 -i aws-ec2-vpcs -

Since Transcriber is running in quiet mode, the only output is Ludwig:

composition

import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2


############################################################
# Region
#   From local AWS setting: us-west-2
############################################################
region: AWS.Us-west-2


############################################################
# VPC
#   Generated from AWS resource: vpc-922891f7
############################################################
ec2-vpc-1: EC2.Vpc.new {
  cidrBlock: "172.31.0.0/16",
  dhcpOptions: EC2.DhcpOptions.external("dopt-175bb772", region),
  enableDnsHostnames: True,
  enableDnsSupport: True,
  instanceTenancy: EC2.DefaultTenancy,
  region: region,
  resourceId: "vpc-922891f7",
}

FAQ

What is Transcriber?

Fugue Transcriber is a command-line tool, packaged with the Fugue Client Tools that scans your AWS account for existing infrastructure and generates a Ludwig composition representing your resources.

How do I install Transcriber?

After you select the package for your platform the Fugue Transcriber is installed as part of the Fugue Client Tools. Complete installation details are available in the Fugue Quick Setup.

How do I uninstall Transcriber?

Fugue Transcriber can be uninstalled along with the Fugue Client Tools. Details about removing Fugue are available here.

How do I upgrade Transcriber?

Fugue Transcriber will be upgraded as part of the Fugue Client Tools, and any feature announcements, upgrades, or new releases of Fugue are available through our Download Portal.

What platforms are Transcriber supported on?

Transcriber is currently supported on the same platforms as the Fugue Client Tools and includes:

  • OS X El Capitan (10.11.*), OS X Sierra (10.12.*), OS X High Sierra (10.13.*)
  • Ubuntu (14.04 LTS, 16.04 LTS)
  • Amazon Linux (2016.03.3)
  • RHEL 6 & 7.2 (Yum/RPM)
  • Microsoft Windows - BETA (Windows 7, 10) Note: For Windows users we recommend using PowerShell 5 and $env:var syntax. To determine your version of PowerShell you can use echo $PSVersionTable.PSVersion. If you have additional questions reach out to support@fugue.co.

Do I need to have a Conductor installed before I can use Transcriber?

No, Fugue Transcriber does not require a Conductor to operate. You will only need the Fugue CLI to issue commands for Transcriber.

What services can I transcribe?

To see the full list of supported services simply issue the fugue-transcriber --list-services command. You can also see the full list at Supported Services.

What determines which services I have permission to transcribe?

Aside from simply using the --include or --exclude options, the scope of the services Transcriber has permission to scan or transcribe is determined by the permissions granted by the AWS credentials used. For more information about IAM policies for Transcriber, see Transcriber and AWS credentials. Further details about AWS permissions are available here.

What if I have comments or questions?

You can reach out to us at support@fugue.co.