Using the CLI¶
When you install aws-service-catalog-factory
you install a command line tool servicecatalog-factory
.
When you bootstrap the framework and upgrade it you use the cli tool to perform these actions.
There are other commands that you may find useful:
validate¶
You can use the servicecatalog-factory
cli to validate your portfolio yaml files:
servicecatalog-factory validate portfolios/
add-secret¶
Note
This was added in version 0.17.0
You can use the servicecatalog-factory
cli to add Secret Key and OAuth tokens that can be used to create products
where the source code comes from a GitHub Repo.
servicecatalog-factory add-secret <secret-name> <oauth_token> <secret_token>
If you do not specify an secret token your oauth token will be used. You should do this if you are using personal access tokens.
add-product-to-portfolio¶
Note
This was added in version 0.9.0
You can use the servicecatalog-factory
cli to add products into your portfolio. This will add your product to the
remote version of the portfolio file you specify:
servicecatalog-factory add-product-to-portfolio portfolio_file_name portfolio_display_name product_definition_file.yaml
product_definition_file.yaml should be a yaml file in the following format:
Description: The iam roles needed for you to do your jobs
Distributor: central-it-team
Name: account-iam-2
Owner: central-it@customer.com
SupportDescription: Contact us on Chime for help
SupportEmail: central-it-team@customer.com
SupportUrl: https://wiki.customer.com/central-it-team/self-service/account-iam
Tags:
- Key: product-type
Value: iam
Note
If your product_definition_file.yaml
file contains a source which is CodeCommit then the repo will be created for you.
remove-product-from-portfolio¶
Note
This was added in version 0.9.0
You can use the servicecatalog-factory
cli to remove products from your portfolio. This will remove your product
from the remote version of the portfolio file you specify:
servicecatalog-factory remove-product-from-portfolio portfolio_file_name portfolio_display_name product_name
Note
This command will not delete git repos
add-version-to-product¶
Note
This was added in version 0.9.0
You can use the servicecatalog-factory
cli to add versions to your products. This will add your version to the
specified product in the remote version of the portfolio file you specify:
servicecatalog-factory add-version-to-product example-simple.yaml central-it-team-portfolio account-iam-2 version_definition_file.yaml
version_definition_file.yaml should be a yaml file in the following format:
Name: v1
Description: The iam roles needed for you to do your jobs
Active: true
Source:
Provider: CodeCommit
Configuration:
BranchName: v1
RepositoryName: account-iam
Note
If your version_definition_file.yaml
file contains a source which is CodeCommit then the repo will be created for you.
remove-version-from-product¶
Note
This was added in version 0.9.0
You can use the servicecatalog-factory
cli to remove versions from products in your portfolio. This will remove
your version from your product in the remote version of the portfolio file you specify:
servicecatalog-factory remove-version-from-product portfolio_file_name portfolio_display_name product_name version_name
Note
This command will not delete git repos
import-product-set¶
Note
This was added in version 0.8.0
You can use the servicecatalog-factory
cli to import products from the aws-service-catalog-products shared repo.
This will update your portfolio file, create your AWS CodeCommit repos, export the code from the AWS shared code repo and push the code into your AWS CodeCommit repo on the correct branch.
servicecatalog-factory import-product-set ServiceCatalogFactory/portfolios/example-simple-github.yaml aws-iam central-it-team-portfolio
You must specify the path to the portfolio file you want to add the product set to, the name of the product set and the name of the portfolio you want to add it to.
list-resources¶
Note
This was added in version 0.7.0
You can use the servicecatalog-factory
cli to list all the resources that will be created to bootstrap the framework
servicecatalog-factory list-resources
Will return the following markdown:
# Framework resources
## SSM Parameters used
- /servicecatalog-factory/config
## Resources for stack: servicecatalog-factory-regional
┌────────────────────────┬─────────────────────┬────────────────────────────────────────────────────────────────┐
│ Logical Name │ Resource Type │ Name │
├────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────┤
│ Param │ AWS::SSM::Parameter │ service-catalog-factory-regional-version │
│ PipelineArtifactBucket │ AWS::S3::Bucket │ Fn::Sub: sc-factory-artifacts-${AWS::AccountId}-${AWS::Region} │
│ │ │ │
└────────────────────────┴─────────────────────┴────────────────────────────────────────────────────────────────┘
## Resources for stack: servicecatalog-factory
┌───────────────────────────────┬─────────────────────────────┬──────────────────────────────────────┐
│ Logical Name │ Resource Type │ Name │
├───────────────────────────────┼─────────────────────────────┼──────────────────────────────────────┤
│ Param │ AWS::SSM::Parameter │ service-catalog-factory-version │
│ SourceRole │ AWS::IAM::Role │ SourceRole │
│ CodeRepo │ AWS::CodeCommit::Repository │ ServiceCatalogFactory │
│ BuildRole │ AWS::IAM::Role │ CodeRole │
│ BuildProject │ AWS::CodeBuild::Project │ servicecatalog-product-factory-build │
│ CodePipelineTriggerRole │ AWS::IAM::Role │ CodePipelineTriggerRole │
│ PipelineRole │ AWS::IAM::Role │ CodePipelineRole │
│ FactoryPipelineArtifactBucket │ AWS::S3::Bucket │ Not Specified │
│ CatalogBucket │ AWS::S3::Bucket │ Not Specified │
│ Pipeline │ AWS::CodePipeline::Pipeline │ Fn::Sub: ${AWS::StackName}-pipeline │
│ │ │ │
│ DeliverySourceRole │ AWS::IAM::Role │ DeliverySourceRole │
│ DeliveryBuildRole │ AWS::IAM::Role │ DeliveryCodeRole │
│ DeliveryPipelineRole │ AWS::IAM::Role │ DeliveryCodePipelineRole │
└───────────────────────────────┴─────────────────────────────┴──────────────────────────────────────┘
AWS::StackName evaluates to servicecatalog-factory
show-pipelines¶
Note
This was changed in version 0.70.0
You can use the servicecatalog-factory
cli to list all the AWS CodePipelines in your factory along with their status
servicecatalog-factory show-pipelines ServiceCatalogFactory
Will return the following:
+------------+------------------------------------------------+--------------------------------------+----------------------------------+-----------+------------------------------------------+------------------------------------------------------------+----------------+-------------------------------------------------------+
| Type | Name | Execution Id | Start Time | Status | Last Commit Id | Last Commit Message | Duration | Trend |
+------------+------------------------------------------------+--------------------------------------+----------------------------------+-----------+------------------------------------------+------------------------------------------------------------+----------------+-------------------------------------------------------+
| core | servicecatalog-factory-pipeline | d435a6b7-cc21-442f-ae47-e2947ae56ce3 | 2021-09-02 12:54:07.136000+01:00 | Failed | c765347e01a36514a1e2f4cce691fc51964005d1 | sdfsdf | 0:01:06.964000 | Failed, Failed, Succeeded, Succeeded, Failed |
| apps | app--ssm-parameter-v2-pipeline | 6f556352-3354-4641-a78e-f95bfe262470 | 2021-08-03 14:38:44.429000+01:00 | Failed | 95e272ad32858b2a2d263268dde8fc7ba0eb6cc1 | Added param.tf | 0:01:10.692000 | Failed |
| portfolios | bug-demo-portfolio-cdk-support-iam-v2-pipeline | N/A | 2021-11-03 19:43:28.612484 | N/A | N/A | N/A | 0:00:00 | |
| portfolios | cdk-support-iam-v2-pipeline | 21cebf98-9dcb-4a10-85bd-d7e273f9eaf1 | 2021-09-02 12:34:28.904000+01:00 | Succeeded | 09705a6242cd67c6e46364a7e70ae3857a2e1c65 | sdsdsd | 0:01:48.474000 | Succeeded, Failed, Succeeded, Succeeded, Succeeded |
| portfolios | cdk-support-bootstrap-v4-pipeline | 3740315e-f317-4d5b-baa2-1a022f22f6f4 | 2021-04-09 19:51:09.178000+01:00 | Succeeded | b38fe7fea05002e1e3d1f86f9454d8a5a64bbceb | Edited handler.py | 0:02:47.400000 | Succeeded, Succeeded, Succeeded, Superseded, Failed |
| portfolios | cdk-ssm-parameter-single-stack-v1-pipeline | c84c925a-ca04-4763-b430-8fa8c370e995 | 2021-04-09 19:24:09.927000+01:00 | Succeeded | aadb4ca8198c318f976c975df1c3d3ad62f1d84f | initial add | 0:05:17.851000 | Succeeded, Succeeded, Failed, Failed, Failed |
| | | | | | | | | |
| portfolios | cdk-ssm-parameter-single-stack-v2-pipeline | a9a289fe-55e5-44e1-8b5c-e73f003c0467 | 2021-05-07 16:34:45.587000+01:00 | Succeeded | 5509f682d2207e0439c16b7dc63deccdded86c44 | Edited cdk-ssm-parameter-single-stack-v1-pipeline-stack.ts | 0:05:17.644000 | Succeeded, Failed, Failed, Failed, Failed |
| portfolios | cdk-ssm-parameter-two-stacks-v1-pipeline | ddd83a86-c10f-4031-b4bd-4c17e266561f | 2021-03-25 18:34:53.223000+00:00 | Failed | N/A | N/A | 0:00:01.293000 | Failed, Failed, Failed, Failed, Failed |
| portfolios | simpleproduct-v1-pipeline | 043bf8e6-154f-436f-9ef2-c0d19d2de57e | 2021-06-07 11:28:48.976000+01:00 | Failed | N/A | N/A | 0:00:01.734000 | Failed, Failed, Succeeded, Succeeded, Succeeded |
| portfolios | simpleproduct-suffixed-v1-pipeline | 6cdcb202-dcc7-4c08-b8a7-a7b42d0cf2da | 2021-03-03 22:46:08.472000+00:00 | Failed | N/A | N/A | 0:00:01.247000 | Failed |
| stacks | stack--ssm-parameter-v2-pipeline | 7badb987-137d-4c3b-b773-3e0cc66b5782 | 2021-09-02 11:02:35.745000+01:00 | Succeeded | 467f87832e5330dbdac346ce823e5e0671b27435 | Added stack.template.yaml | 0:02:22.555000 | Succeeded, Failed, Failed, Succeeded |
| stacks | stack--aac-type-b-network-v1-pipeline | N/A | 2021-11-03 19:43:28.612484 | N/A | N/A | N/A | 0:00:00 | |
| workspaces | workspace--ssm-parameter-v2-pipeline | e95b2731-5c8f-4a1c-a35e-430770e10783 | 2021-08-03 15:13:42.181000+01:00 | Succeeded | 64d866c7205f33266d85d7c99eb11f38f4ff99d2 | Edited param.tf | 0:01:46.176000 | Succeeded, Succeeded, Succeeded, Succeeded, Succeeded |
+------------+------------------------------------------------+--------------------------------------+----------------------------------+-----------+------------------------------------------+------------------------------------------------------------+----------------+-------------------------------------------------------+
Note
This was added in version 0.11.0
You can specify the output format for show-pipelines. Valid options are table
, json
and html
servicecatalog-factory show-pipelines ServiceCatalogFactory/ --format json
nuke-product-version¶
You can use the servicecatalog-factory
cli to remove a product from AWS Service Catalog and to remove
the AWS CodePipeline that was generated by this library. To use it, you will need your portofolio name,
product name and product version - all of which is available to view from your AWS Service Catalog console.
Once you have the details you can run the following command:
servicecatalog-factory nuke-product-version example-simple-central-it-team-portfolio account-iam v1
delete-stack-from-all-regions¶
You can delete a stack from every region using the following command:
servicecatalog-factory delete-stack-from-all-regions stack-name
Please note, this will only delete the stack from the regions you have specifed in your config.
fix-issues¶
Whilst developing your products you may find AWS CloudFormation stacks in states you cannot work with. If this happens the fix-issues command will try to resolve it for you. It will prompt you to confirm anything it does within your account before it does it so give it a try when you get stuck.
servicecatalog-factory fix-issues ServiceCatalogFactory/portfolios