Package: aws-cdk.aws-servicecatalogappregistry-alpha
AWS ServiceCatalogAppRegistry Construct Library---The APIs of higher level constructs in this module are experimental and under active development.
They are subject to non-backward compatible changes or removal in any future version. These are
not subject to theSemantic Versioningmodel and breaking changes will be
announced in the release notes. This means that while you may use them, you may need to update
your source code when upgrading to a newer version of this package.AWS Service Catalog App Registryenables organizations to create and manage repositories of applications and associated resources.Table Of ContentsApplicationApplication-AssociatorAttribute-GroupAssociationsAssociating application with an attribute groupAssociating application with a stackSharingSharing an applicationSharing an attribute groupThe@aws-cdk/aws-servicecatalogappregistry-alphapackage contains resources that enable users to automate governance and management of their AWS resources at scale.importaws_cdk.aws_servicecatalogappregistry_alphaasappregApplicationAn AppRegistry application enables you to define your applications and associated resources.
The application name must be unique at the account level and it's immutable.application=appreg.Application(self,"MyFirstApplication",application_name="MyFirstApplicationName",description="description for my application")An application that has been created outside of the stack can be imported into your CDK app.
Applications can be imported by their ARN via theApplication.fromApplicationArn()API:imported_application=appreg.Application.from_application_arn(self,"MyImportedApplication","arn:aws:servicecatalog:us-east-1:012345678910:/applications/0aqmvxvgmry0ecc4mjhwypun6i")Application-AssociatorApplicationAssociatordefines an AppRegistry application to contain all the stacks in deployed through your cdk package. This helps to manage all the
cdk deployed resources.Create a new application to associate all the stacks in the cdk.App scopeIf you want to create an Application namedMyAssociatedApplicationin account123456789012and regionus-east-1and want to associate all stacks in theAppscope toMyAssociatedApplication, then use as shown in the example below:app=App()associated_app=appreg.ApplicationAssociator(app,"AssociatedApplication",applications=[appreg.TargetApplication.create_application_stack(application_name="MyAssociatedApplication",# 'Application containing stacks deployed via CDK.' is the defaultapplication_description="Associated Application description",stack_name="MyAssociatedApplicationStack",# AWS Account and Region that are implied by the current CLI configuration is the defaultenv=Environment(account="123456789012",region="us-east-1"))])This will create a stackMyAssociatedApplicationStackcontaining an applicationMyAssociatedApplicationwith theTagKeyasmanagedByandTagValueasCDK_Application_Associator.By default, the stack will have System Managed Application Manager console URL as its output for the application created.
If you want to remove the output, then use as shown in the example below:app=App()associated_app=appreg.ApplicationAssociator(app,"AssociatedApplication",applications=[appreg.TargetApplication.create_application_stack(application_name="MyAssociatedApplication",# 'Application containing stacks deployed via CDK.' is the defaultapplication_description="Associated Application description",stack_name="MyAssociatedApplicationStack",# Disables emitting Application Manager url as outputemit_application_manager_url_as_output=False,# AWS Account and Region that are implied by the current CLI configuration is the defaultenv=Environment(account="123456789012",region="us-east-1"))])Import existing application to associate all the stacks in the cdk.App scopeIf you want to re-use an existing Application with ARN:arn:aws:servicecatalog:us-east-1:123456789012:/applications/applicationIdand want to associate all stacks in theAppscope to your imported application, then use as shown in the example below:app=App()associated_app=appreg.ApplicationAssociator(app,"AssociatedApplication",applications=[appreg.TargetApplication.existing_application_from_arn(application_arn_value="arn:aws:servicecatalog:us-east-1:123456789012:/applications/applicationId",stack_name="MyAssociatedApplicationStack")])Associate attribute group to the application used byApplicationAssociatorIf you want to associate an Attribute Group with application created byApplicationAssociator, then use as shown in the example below:importaws_cdkascdkapp=App()associated_app=appreg.ApplicationAssociator(app,"AssociatedApplication",applications=[appreg.TargetApplication.create_application_stack(application_name="MyAssociatedApplication",# 'Application containing stacks deployed via CDK.' is the defaultapplication_description="Associated Application description",stack_name="MyAssociatedApplicationStack",# AWS Account and Region that are implied by the current CLI configuration is the defaultenv=cdk.Environment(account="123456789012",region="us-east-1"))])# Associate application to the attribute group.associated_app.app_registry_application.add_attribute_group("MyAttributeGroup",attribute_group_name="MyAttributeGroupName",description="Test attribute group",attributes={})Associate stacks deployed by CDK pipelinesIf you are using CDK Pipelines to deploy your application, the application stacks will be inside Stages, and
ApplicationAssociator will not be able to find them. CallassociateStageon each Stage object before adding it to the
Pipeline, as shown in the example below:importaws_cdkascdkimportaws_cdk.pipelinesascodepipelineimportaws_cdk.aws_codecommitascodecommit# repo: codecommit.Repository# pipeline: codepipeline.CodePipeline# beta: cdk.StageclassApplicationPipelineStack(cdk.Stack):def__init__(self,scope,id,*,application,description=None,env=None,stackName=None,tags=None,synthesizer=None,terminationProtection=None,analyticsReporting=None,crossRegionReferences=None,permissionsBoundary=None,suppressTemplateIndentation=None):super().__init__(scope,id,application=application,description=description,env=env,stackName=stackName,tags=tags,synthesizer=synthesizer,terminationProtection=terminationProtection,analyticsReporting=analyticsReporting,crossRegionReferences=crossRegionReferences,permissionsBoundary=permissionsBoundary,suppressTemplateIndentation=suppressTemplateIndentation)# associate the stage to application associator.application.associate_stage(beta)pipeline.add_stage(beta)app=App()associated_app=appreg.ApplicationAssociator(app,"AssociatedApplication",applications=[appreg.TargetApplication.create_application_stack(application_name="MyPipelineAssociatedApplication",stack_name="MyPipelineAssociatedApplicationStack",env=cdk.Environment(account="123456789012",region="us-east-1"))])cdk_pipeline=ApplicationPipelineStack(app,"CDKApplicationPipelineStack",application=associated_app,env=cdk.Environment(account="123456789012",region="us-east-1"))Associate cross-account stackBy default, ApplicationAssociator will not perform cross-account stack associations with the target Application,
to avoid deployment failures for accounts which have not been setup for cross-account associations.
To enable cross-account stack associations, make sure all accounts are in the same organization as the
target Application's account and that resource sharing is enabled within the organization.
If you wish to turn on cross-account sharing and associations, set theassociateCrossAccountStacksfield totrue,
as shown in the example below:app=App()associated_app=appreg.ApplicationAssociator(app,"AssociatedApplication",applications=[appreg.TargetApplication.create_application_stack(associate_cross_account_stacks=True,application_name="MyAssociatedApplication",env=Environment(account="123456789012",region="us-east-1"))])Associate cross-region stackCurrently, cross-region stack association is not supported.Attribute GroupAn AppRegistry attribute group acts as a container for user-defined attributes for an application.
Metadata is attached in a machine-readable format to integrate with automated workflows and tools.
The attribute group name must be unique at the account level and it's immutable.attribute_group=appreg.AttributeGroup(self,"MyFirstAttributeGroup",attribute_group_name="MyFirstAttributeGroupName",description="description for my attribute group",# the description is optional,attributes={"project":"foo","team":["member1","member2","member3"],"public":False,"stages":{"alpha":"complete","beta":"incomplete","release":"not started"}})An attribute group that has been created outside of the stack can be imported into your CDK app.
Attribute groups can be imported by their ARN via theAttributeGroup.fromAttributeGroupArn()API:imported_attribute_group=appreg.AttributeGroup.from_attribute_group_arn(self,"MyImportedAttrGroup","arn:aws:servicecatalog:us-east-1:012345678910:/attribute-groups/0aqmvxvgmry0ecc4mjhwypun6i")AssociationsYou can associate your appregistry application with attribute groups and resources.
Resources are CloudFormation stacks that you can associate with an application to group relevant
stacks together to enable metadata rich insights into your applications and resources.
A Cloudformation stack can only be associated with one appregistry application.
If a stack is associated with multiple applications in your app or is already associated with one,
CDK will fail at deploy time.Associating application with a new attribute groupYou can create and associate an attribute group to an application with theaddAttributeGroup()API:# application: appreg.Application# attribute_group: appreg.AttributeGroupapplication.add_attribute_group("MyAttributeGroupId",attribute_group_name="MyAttributeGroupName",description="Test attribute group",attributes={})Associating an attribute group with applicationYou can associate an application with an attribute group withassociateWith:# application: appreg.Application# attribute_group: appreg.AttributeGroupattribute_group.associate_with(application)Associating application with a StackYou can associate a stack with an application with theassociateApplicationWithStack()API:# application: appreg.Applicationapp=App()my_stack=Stack(app,"MyStack")application.associate_application_with_stack(my_stack)SharingYou can share your AppRegistry applications and attribute groups with AWS Organizations, Organizational Units (OUs), AWS accounts within an organization, as well as IAM roles and users. AppRegistry requires that AWS Organizations is enabled in an account before deploying a share of an application or attribute group.Sharing an applicationimportaws_cdk.aws_iamasiam# application: appreg.Application# my_role: iam.IRole# my_user: iam.IUserapplication.share_application("MyShareId",name="MyShare",accounts=["123456789012"],organization_arns=["arn:aws:organizations::123456789012:organization/o-my-org-id"],roles=[my_role],users=[my_user])E.g., sharing an application with multiple accounts and allowing the accounts to associate resources to the application.importaws_cdk.aws_iamasiam# application: appreg.Applicationapplication.share_application("MyShareId",name="MyShare",accounts=["123456789012","234567890123"],share_permission=appreg.SharePermission.ALLOW_ACCESS)Sharing an attribute groupimportaws_cdk.aws_iamasiam# attribute_group: appreg.AttributeGroup# my_role: iam.IRole# my_user: iam.IUserattribute_group.share_attribute_group("MyShareId",name="MyShare",accounts=["123456789012"],organization_arns=["arn:aws:organizations::123456789012:organization/o-my-org-id"],roles=[my_role],users=[my_user])E.g., sharing an application with multiple accounts and allowing the accounts to associate applications to the attribute group.importaws_cdk.aws_iamasiam# attribute_group: appreg.AttributeGroupattribute_group.share_attribute_group("MyShareId",name="MyShare",accounts=["123456789012","234567890123"],share_permission=appreg.SharePermission.ALLOW_ACCESS)