%global _empty_manifest_terminate_build 0 Name: python-aws-cdk.aws-servicecatalogappregistry-alpha Version: 2.81.0a0 Release: 1 Summary: The CDK Construct Library for AWS::ServiceCatalogAppRegistry License: Apache-2.0 URL: https://github.com/aws/aws-cdk Source0: https://mirrors.nju.edu.cn/pypi/web/packages/81/80/a27b7ea7bf43f7da78af925bcd81d0d19d837fe49945a27c05231877e63b/aws-cdk.aws-servicecatalogappregistry-alpha-2.81.0a0.tar.gz BuildArch: noarch Requires: python3-aws-cdk-lib Requires: python3-constructs Requires: python3-jsii Requires: python3-publication Requires: python3-typeguard %description [AWS Service Catalog App Registry](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/appregistry.html) enables organizations to create and manage repositories of applications and associated resources. ## Table Of Contents * [Application](#application) * [Application-Associator](#application-associator) * [Attribute-Group](#attribute-group) * [Associations](#associations) * [Associating application with an attribute group](#attribute-group-association) * [Associating application with a stack](#resource-association) * [Sharing](#sharing) * [Sharing an application](#sharing-an-application) * [Sharing an attribute group](#sharing-an-attribute-group) The `@aws-cdk/aws-servicecatalogappregistry` package contains resources that enable users to automate governance and management of their AWS resources at scale. ```python import aws_cdk.aws_servicecatalogappregistry_alpha as appreg ``` ## Application An 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. ```python 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 the `Application.fromApplicationArn()` API: ```python imported_application = appreg.Application.from_application_arn(self, "MyImportedApplication", "arn:aws:servicecatalog:us-east-1:012345678910:/applications/0aqmvxvgmry0ecc4mjhwypun6i") ``` ## Application-Associator `ApplicationAssociator` defines 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 scope If you want to create an Application named `MyAssociatedApplication` in account `123456789012` and region `us-east-1` and want to associate all stacks in the `App` scope to `MyAssociatedApplication`, then use as shown in the example below: ```python 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # AWS Account and Region that are implied by the current CLI configuration is the default env=Environment(account="123456789012", region="us-east-1") )] ) ``` This will create a stack `MyAssociatedApplicationStack` containing an application `MyAssociatedApplication` with the `TagKey` as `managedBy` and `TagValue` as `CDK_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: ```python 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # Disables emitting Application Manager url as output emit_application_manager_url_as_output=False, # AWS Account and Region that are implied by the current CLI configuration is the default env=Environment(account="123456789012", region="us-east-1") )] ) ``` ### Import existing application to associate all the stacks in the cdk.App scope If you want to re-use an existing Application with ARN: `arn:aws:servicecatalog:us-east-1:123456789012:/applications/applicationId` and want to associate all stacks in the `App` scope to your imported application, then use as shown in the example below: ```python 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 by `ApplicationAssociator` If you want to associate an Attribute Group with application created by `ApplicationAssociator`, then use as shown in the example below: ```python import aws_cdk as cdk 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # AWS Account and Region that are implied by the current CLI configuration is the default env=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 pipelines If 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. Call `associateStage` on each Stage object before adding it to the Pipeline, as shown in the example below: ```python import aws_cdk as cdk import aws_cdk.pipelines as codepipeline import aws_cdk.aws_codecommit as codecommit # repo: codecommit.Repository # pipeline: codepipeline.CodePipeline # beta: cdk.Stage class ApplicationPipelineStack(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): super().__init__(scope, id, application=application, description=description, env=env, stackName=stackName, tags=tags, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary) # 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 stack By 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 the `associateCrossAccountStacks` field to `true`, as shown in the example below: ```python 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 stack Currently, cross-region stack association is not supported. ## Attribute Group An 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. ```python 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 the `AttributeGroup.fromAttributeGroupArn()` API: ```python imported_attribute_group = appreg.AttributeGroup.from_attribute_group_arn(self, "MyImportedAttrGroup", "arn:aws:servicecatalog:us-east-1:012345678910:/attribute-groups/0aqmvxvgmry0ecc4mjhwypun6i") ``` ## Associations You 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 group You can create and associate an attribute group to an application with the `addAttributeGroup()` API: ```python # application: appreg.Application # attribute_group: appreg.AttributeGroup application.add_attribute_group("MyAttributeGroupId", attribute_group_name="MyAttributeGroupName", description="Test attribute group", attributes={} ) ``` ### Associating an attribute group with application You can associate an application with an attribute group with `associateWith`: ```python # application: appreg.Application # attribute_group: appreg.AttributeGroup attribute_group.associate_with(application) ``` ### Associating application with a Stack You can associate a stack with an application with the `associateApplicationWithStack()` API: ```python # application: appreg.Application app = App() my_stack = Stack(app, "MyStack") application.associate_application_with_stack(my_stack) ``` ## Sharing You 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 application ```python import aws_cdk.aws_iam as iam # application: appreg.Application # my_role: iam.IRole # my_user: iam.IUser application.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. ```python import aws_cdk.aws_iam as iam # application: appreg.Application application.share_application("MyShareId", name="MyShare", accounts=["123456789012", "234567890123"], share_permission=appreg.SharePermission.ALLOW_ACCESS ) ``` ### Sharing an attribute group ```python import aws_cdk.aws_iam as iam # attribute_group: appreg.AttributeGroup # my_role: iam.IRole # my_user: iam.IUser attribute_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. ```python import aws_cdk.aws_iam as iam # attribute_group: appreg.AttributeGroup attribute_group.share_attribute_group("MyShareId", name="MyShare", accounts=["123456789012", "234567890123"], share_permission=appreg.SharePermission.ALLOW_ACCESS ) ``` %package -n python3-aws-cdk.aws-servicecatalogappregistry-alpha Summary: The CDK Construct Library for AWS::ServiceCatalogAppRegistry Provides: python-aws-cdk.aws-servicecatalogappregistry-alpha BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-aws-cdk.aws-servicecatalogappregistry-alpha [AWS Service Catalog App Registry](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/appregistry.html) enables organizations to create and manage repositories of applications and associated resources. ## Table Of Contents * [Application](#application) * [Application-Associator](#application-associator) * [Attribute-Group](#attribute-group) * [Associations](#associations) * [Associating application with an attribute group](#attribute-group-association) * [Associating application with a stack](#resource-association) * [Sharing](#sharing) * [Sharing an application](#sharing-an-application) * [Sharing an attribute group](#sharing-an-attribute-group) The `@aws-cdk/aws-servicecatalogappregistry` package contains resources that enable users to automate governance and management of their AWS resources at scale. ```python import aws_cdk.aws_servicecatalogappregistry_alpha as appreg ``` ## Application An 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. ```python 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 the `Application.fromApplicationArn()` API: ```python imported_application = appreg.Application.from_application_arn(self, "MyImportedApplication", "arn:aws:servicecatalog:us-east-1:012345678910:/applications/0aqmvxvgmry0ecc4mjhwypun6i") ``` ## Application-Associator `ApplicationAssociator` defines 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 scope If you want to create an Application named `MyAssociatedApplication` in account `123456789012` and region `us-east-1` and want to associate all stacks in the `App` scope to `MyAssociatedApplication`, then use as shown in the example below: ```python 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # AWS Account and Region that are implied by the current CLI configuration is the default env=Environment(account="123456789012", region="us-east-1") )] ) ``` This will create a stack `MyAssociatedApplicationStack` containing an application `MyAssociatedApplication` with the `TagKey` as `managedBy` and `TagValue` as `CDK_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: ```python 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # Disables emitting Application Manager url as output emit_application_manager_url_as_output=False, # AWS Account and Region that are implied by the current CLI configuration is the default env=Environment(account="123456789012", region="us-east-1") )] ) ``` ### Import existing application to associate all the stacks in the cdk.App scope If you want to re-use an existing Application with ARN: `arn:aws:servicecatalog:us-east-1:123456789012:/applications/applicationId` and want to associate all stacks in the `App` scope to your imported application, then use as shown in the example below: ```python 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 by `ApplicationAssociator` If you want to associate an Attribute Group with application created by `ApplicationAssociator`, then use as shown in the example below: ```python import aws_cdk as cdk 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # AWS Account and Region that are implied by the current CLI configuration is the default env=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 pipelines If 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. Call `associateStage` on each Stage object before adding it to the Pipeline, as shown in the example below: ```python import aws_cdk as cdk import aws_cdk.pipelines as codepipeline import aws_cdk.aws_codecommit as codecommit # repo: codecommit.Repository # pipeline: codepipeline.CodePipeline # beta: cdk.Stage class ApplicationPipelineStack(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): super().__init__(scope, id, application=application, description=description, env=env, stackName=stackName, tags=tags, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary) # 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 stack By 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 the `associateCrossAccountStacks` field to `true`, as shown in the example below: ```python 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 stack Currently, cross-region stack association is not supported. ## Attribute Group An 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. ```python 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 the `AttributeGroup.fromAttributeGroupArn()` API: ```python imported_attribute_group = appreg.AttributeGroup.from_attribute_group_arn(self, "MyImportedAttrGroup", "arn:aws:servicecatalog:us-east-1:012345678910:/attribute-groups/0aqmvxvgmry0ecc4mjhwypun6i") ``` ## Associations You 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 group You can create and associate an attribute group to an application with the `addAttributeGroup()` API: ```python # application: appreg.Application # attribute_group: appreg.AttributeGroup application.add_attribute_group("MyAttributeGroupId", attribute_group_name="MyAttributeGroupName", description="Test attribute group", attributes={} ) ``` ### Associating an attribute group with application You can associate an application with an attribute group with `associateWith`: ```python # application: appreg.Application # attribute_group: appreg.AttributeGroup attribute_group.associate_with(application) ``` ### Associating application with a Stack You can associate a stack with an application with the `associateApplicationWithStack()` API: ```python # application: appreg.Application app = App() my_stack = Stack(app, "MyStack") application.associate_application_with_stack(my_stack) ``` ## Sharing You 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 application ```python import aws_cdk.aws_iam as iam # application: appreg.Application # my_role: iam.IRole # my_user: iam.IUser application.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. ```python import aws_cdk.aws_iam as iam # application: appreg.Application application.share_application("MyShareId", name="MyShare", accounts=["123456789012", "234567890123"], share_permission=appreg.SharePermission.ALLOW_ACCESS ) ``` ### Sharing an attribute group ```python import aws_cdk.aws_iam as iam # attribute_group: appreg.AttributeGroup # my_role: iam.IRole # my_user: iam.IUser attribute_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. ```python import aws_cdk.aws_iam as iam # attribute_group: appreg.AttributeGroup attribute_group.share_attribute_group("MyShareId", name="MyShare", accounts=["123456789012", "234567890123"], share_permission=appreg.SharePermission.ALLOW_ACCESS ) ``` %package help Summary: Development documents and examples for aws-cdk.aws-servicecatalogappregistry-alpha Provides: python3-aws-cdk.aws-servicecatalogappregistry-alpha-doc %description help [AWS Service Catalog App Registry](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/appregistry.html) enables organizations to create and manage repositories of applications and associated resources. ## Table Of Contents * [Application](#application) * [Application-Associator](#application-associator) * [Attribute-Group](#attribute-group) * [Associations](#associations) * [Associating application with an attribute group](#attribute-group-association) * [Associating application with a stack](#resource-association) * [Sharing](#sharing) * [Sharing an application](#sharing-an-application) * [Sharing an attribute group](#sharing-an-attribute-group) The `@aws-cdk/aws-servicecatalogappregistry` package contains resources that enable users to automate governance and management of their AWS resources at scale. ```python import aws_cdk.aws_servicecatalogappregistry_alpha as appreg ``` ## Application An 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. ```python 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 the `Application.fromApplicationArn()` API: ```python imported_application = appreg.Application.from_application_arn(self, "MyImportedApplication", "arn:aws:servicecatalog:us-east-1:012345678910:/applications/0aqmvxvgmry0ecc4mjhwypun6i") ``` ## Application-Associator `ApplicationAssociator` defines 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 scope If you want to create an Application named `MyAssociatedApplication` in account `123456789012` and region `us-east-1` and want to associate all stacks in the `App` scope to `MyAssociatedApplication`, then use as shown in the example below: ```python 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # AWS Account and Region that are implied by the current CLI configuration is the default env=Environment(account="123456789012", region="us-east-1") )] ) ``` This will create a stack `MyAssociatedApplicationStack` containing an application `MyAssociatedApplication` with the `TagKey` as `managedBy` and `TagValue` as `CDK_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: ```python 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # Disables emitting Application Manager url as output emit_application_manager_url_as_output=False, # AWS Account and Region that are implied by the current CLI configuration is the default env=Environment(account="123456789012", region="us-east-1") )] ) ``` ### Import existing application to associate all the stacks in the cdk.App scope If you want to re-use an existing Application with ARN: `arn:aws:servicecatalog:us-east-1:123456789012:/applications/applicationId` and want to associate all stacks in the `App` scope to your imported application, then use as shown in the example below: ```python 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 by `ApplicationAssociator` If you want to associate an Attribute Group with application created by `ApplicationAssociator`, then use as shown in the example below: ```python import aws_cdk as cdk 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 default application_description="Associated Application description", stack_name="MyAssociatedApplicationStack", # AWS Account and Region that are implied by the current CLI configuration is the default env=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 pipelines If 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. Call `associateStage` on each Stage object before adding it to the Pipeline, as shown in the example below: ```python import aws_cdk as cdk import aws_cdk.pipelines as codepipeline import aws_cdk.aws_codecommit as codecommit # repo: codecommit.Repository # pipeline: codepipeline.CodePipeline # beta: cdk.Stage class ApplicationPipelineStack(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): super().__init__(scope, id, application=application, description=description, env=env, stackName=stackName, tags=tags, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary) # 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 stack By 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 the `associateCrossAccountStacks` field to `true`, as shown in the example below: ```python 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 stack Currently, cross-region stack association is not supported. ## Attribute Group An 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. ```python 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 the `AttributeGroup.fromAttributeGroupArn()` API: ```python imported_attribute_group = appreg.AttributeGroup.from_attribute_group_arn(self, "MyImportedAttrGroup", "arn:aws:servicecatalog:us-east-1:012345678910:/attribute-groups/0aqmvxvgmry0ecc4mjhwypun6i") ``` ## Associations You 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 group You can create and associate an attribute group to an application with the `addAttributeGroup()` API: ```python # application: appreg.Application # attribute_group: appreg.AttributeGroup application.add_attribute_group("MyAttributeGroupId", attribute_group_name="MyAttributeGroupName", description="Test attribute group", attributes={} ) ``` ### Associating an attribute group with application You can associate an application with an attribute group with `associateWith`: ```python # application: appreg.Application # attribute_group: appreg.AttributeGroup attribute_group.associate_with(application) ``` ### Associating application with a Stack You can associate a stack with an application with the `associateApplicationWithStack()` API: ```python # application: appreg.Application app = App() my_stack = Stack(app, "MyStack") application.associate_application_with_stack(my_stack) ``` ## Sharing You 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 application ```python import aws_cdk.aws_iam as iam # application: appreg.Application # my_role: iam.IRole # my_user: iam.IUser application.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. ```python import aws_cdk.aws_iam as iam # application: appreg.Application application.share_application("MyShareId", name="MyShare", accounts=["123456789012", "234567890123"], share_permission=appreg.SharePermission.ALLOW_ACCESS ) ``` ### Sharing an attribute group ```python import aws_cdk.aws_iam as iam # attribute_group: appreg.AttributeGroup # my_role: iam.IRole # my_user: iam.IUser attribute_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. ```python import aws_cdk.aws_iam as iam # attribute_group: appreg.AttributeGroup attribute_group.share_attribute_group("MyShareId", name="MyShare", accounts=["123456789012", "234567890123"], share_permission=appreg.SharePermission.ALLOW_ACCESS ) ``` %prep %autosetup -n aws-cdk.aws-servicecatalogappregistry-alpha-2.81.0a0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-aws-cdk.aws-servicecatalogappregistry-alpha -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 31 2023 Python_Bot - 2.81.0a0-1 - Package Spec generated