aws-cdk.aws-amplify


Nameaws-cdk.aws-amplify JSON
Version 1.203.0 PyPI version JSON
download
home_pagehttps://github.com/aws/aws-cdk
SummaryThe CDK Construct Library for AWS::Amplify
upload_time2023-05-31 23:00:24
maintainer
docs_urlNone
authorAmazon Web Services
requires_python~=3.7
licenseApache-2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # AWS Amplify Construct Library

<!--BEGIN STABILITY BANNER-->---


![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge)

> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use.

![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)

> 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 the [Semantic Versioning](https://semver.org/) model 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.

---
<!--END STABILITY BANNER-->

The AWS Amplify Console provides a Git-based workflow for deploying and hosting fullstack serverless web applications. A fullstack serverless app consists of a backend built with cloud resources such as GraphQL or REST APIs, file and data storage, and a frontend built with single page application frameworks such as React, Angular, Vue, or Gatsby.

## Setting up an app with branches, custom rules and a domain

To set up an Amplify Console app, define an `App`:

```python
import aws_cdk.aws_codebuild as codebuild


amplify_app = amplify.App(self, "MyApp",
    source_code_provider=amplify.GitHubSourceCodeProvider(
        owner="<user>",
        repository="<repo>",
        oauth_token=SecretValue.secrets_manager("my-github-token")
    ),
    build_spec=codebuild.BuildSpec.from_object_to_yaml({
        # Alternatively add a `amplify.yml` to the repo
        "version": "1.0",
        "frontend": {
            "phases": {
                "pre_build": {
                    "commands": ["yarn"
                    ]
                },
                "build": {
                    "commands": ["yarn build"
                    ]
                }
            },
            "artifacts": {
                "base_directory": "public",
                "files": -"**/*"
            }
        }
    })
)
```

To connect your `App` to GitLab, use the `GitLabSourceCodeProvider`:

```python
amplify_app = amplify.App(self, "MyApp",
    source_code_provider=amplify.GitLabSourceCodeProvider(
        owner="<user>",
        repository="<repo>",
        oauth_token=SecretValue.secrets_manager("my-gitlab-token")
    )
)
```

To connect your `App` to CodeCommit, use the `CodeCommitSourceCodeProvider`:

```python
import aws_cdk.aws_codecommit as codecommit


repository = codecommit.Repository(self, "Repo",
    repository_name="my-repo"
)

amplify_app = amplify.App(self, "App",
    source_code_provider=amplify.CodeCommitSourceCodeProvider(repository=repository)
)
```

The IAM role associated with the `App` will automatically be granted the permission
to pull the CodeCommit repository.

Add branches:

```python
# amplify_app: amplify.App


master = amplify_app.add_branch("master") # `id` will be used as repo branch name
dev = amplify_app.add_branch("dev",
    performance_mode=True
)
dev.add_environment("STAGE", "dev")
```

Auto build and pull request preview are enabled by default.

Add custom rules for redirection:

```python
# amplify_app: amplify.App

amplify_app.add_custom_rule({
    "source": "/docs/specific-filename.html",
    "target": "/documents/different-filename.html",
    "status": amplify.RedirectStatus.TEMPORARY_REDIRECT
})
```

When working with a single page application (SPA), use the
`CustomRule.SINGLE_PAGE_APPLICATION_REDIRECT` to set up a 200
rewrite for all files to `index.html` except for the following
file extensions: css, gif, ico, jpg, js, png, txt, svg, woff,
ttf, map, json, webmanifest.

```python
# my_single_page_app: amplify.App


my_single_page_app.add_custom_rule(amplify.CustomRule.SINGLE_PAGE_APPLICATION_REDIRECT)
```

Add a domain and map sub domains to branches:

```python
# amplify_app: amplify.App
# master: amplify.Branch
# dev: amplify.Branch


domain = amplify_app.add_domain("example.com",
    enable_auto_subdomain=True,  # in case subdomains should be auto registered for branches
    auto_subdomain_creation_patterns=["*", "pr*"]
)
domain.map_root(master) # map master branch to domain root
domain.map_sub_domain(master, "www")
domain.map_sub_domain(dev)
```

## Restricting access

Password protect the app with basic auth by specifying the `basicAuth` prop.

Use `BasicAuth.fromCredentials` when referencing an existing secret:

```python
amplify_app = amplify.App(self, "MyApp",
    source_code_provider=amplify.GitHubSourceCodeProvider(
        owner="<user>",
        repository="<repo>",
        oauth_token=SecretValue.secrets_manager("my-github-token")
    ),
    basic_auth=amplify.BasicAuth.from_credentials("username", SecretValue.secrets_manager("my-github-token"))
)
```

Use `BasicAuth.fromGeneratedPassword` to generate a password in Secrets Manager:

```python
amplify_app = amplify.App(self, "MyApp",
    source_code_provider=amplify.GitHubSourceCodeProvider(
        owner="<user>",
        repository="<repo>",
        oauth_token=SecretValue.secrets_manager("my-github-token")
    ),
    basic_auth=amplify.BasicAuth.from_generated_password("username")
)
```

Basic auth can be added to specific branches:

```python
# amplify_app: amplify.App

amplify_app.add_branch("feature/next",
    basic_auth=amplify.BasicAuth.from_generated_password("username")
)
```

## Automatically creating and deleting branches

Use the `autoBranchCreation` and `autoBranchDeletion` props to control creation/deletion
of branches:

```python
amplify_app = amplify.App(self, "MyApp",
    source_code_provider=amplify.GitHubSourceCodeProvider(
        owner="<user>",
        repository="<repo>",
        oauth_token=SecretValue.secrets_manager("my-github-token")
    ),
    auto_branch_creation=amplify.AutoBranchCreation( # Automatically connect branches that match a pattern set
        patterns=["feature/*", "test/*"]),
    auto_branch_deletion=True
)
```

## Adding custom response headers

Use the `customResponseHeaders` prop to configure custom response headers for an Amplify app:

```python
amplify_app = amplify.App(self, "App",
    source_code_provider=amplify.GitHubSourceCodeProvider(
        owner="<user>",
        repository="<repo>",
        oauth_token=SecretValue.secrets_manager("my-github-token")
    ),
    custom_response_headers=[amplify.CustomResponseHeader(
        pattern="*.json",
        headers={
            "custom-header-name-1": "custom-header-value-1",
            "custom-header-name-2": "custom-header-value-2"
        }
    ), amplify.CustomResponseHeader(
        pattern="/path/*",
        headers={
            "custom-header-name-1": "custom-header-value-2"
        }
    )
    ]
)
```

## Deploying Assets

`sourceCodeProvider` is optional; when this is not specified the Amplify app can be deployed to using `.zip` packages. The `asset` property can be used to deploy S3 assets to Amplify as part of the CDK:

```python
import aws_cdk.aws_s3_assets as assets

# asset: assets.Asset
# amplify_app: amplify.App

branch = amplify_app.add_branch("dev", asset=asset)
```



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aws/aws-cdk",
    "name": "aws-cdk.aws-amplify",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "~=3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "Amazon Web Services",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/56/4a/713e93bf409ae1c97817fd9f4e39063de06aa96005adce73971181e54768/aws-cdk.aws-amplify-1.203.0.tar.gz",
    "platform": null,
    "description": "# AWS Amplify Construct Library\n\n<!--BEGIN STABILITY BANNER-->---\n\n\n![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge)\n\n> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use.\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n<!--END STABILITY BANNER-->\n\nThe AWS Amplify Console provides a Git-based workflow for deploying and hosting fullstack serverless web applications. A fullstack serverless app consists of a backend built with cloud resources such as GraphQL or REST APIs, file and data storage, and a frontend built with single page application frameworks such as React, Angular, Vue, or Gatsby.\n\n## Setting up an app with branches, custom rules and a domain\n\nTo set up an Amplify Console app, define an `App`:\n\n```python\nimport aws_cdk.aws_codebuild as codebuild\n\n\namplify_app = amplify.App(self, \"MyApp\",\n    source_code_provider=amplify.GitHubSourceCodeProvider(\n        owner=\"<user>\",\n        repository=\"<repo>\",\n        oauth_token=SecretValue.secrets_manager(\"my-github-token\")\n    ),\n    build_spec=codebuild.BuildSpec.from_object_to_yaml({\n        # Alternatively add a `amplify.yml` to the repo\n        \"version\": \"1.0\",\n        \"frontend\": {\n            \"phases\": {\n                \"pre_build\": {\n                    \"commands\": [\"yarn\"\n                    ]\n                },\n                \"build\": {\n                    \"commands\": [\"yarn build\"\n                    ]\n                }\n            },\n            \"artifacts\": {\n                \"base_directory\": \"public\",\n                \"files\": -\"**/*\"\n            }\n        }\n    })\n)\n```\n\nTo connect your `App` to GitLab, use the `GitLabSourceCodeProvider`:\n\n```python\namplify_app = amplify.App(self, \"MyApp\",\n    source_code_provider=amplify.GitLabSourceCodeProvider(\n        owner=\"<user>\",\n        repository=\"<repo>\",\n        oauth_token=SecretValue.secrets_manager(\"my-gitlab-token\")\n    )\n)\n```\n\nTo connect your `App` to CodeCommit, use the `CodeCommitSourceCodeProvider`:\n\n```python\nimport aws_cdk.aws_codecommit as codecommit\n\n\nrepository = codecommit.Repository(self, \"Repo\",\n    repository_name=\"my-repo\"\n)\n\namplify_app = amplify.App(self, \"App\",\n    source_code_provider=amplify.CodeCommitSourceCodeProvider(repository=repository)\n)\n```\n\nThe IAM role associated with the `App` will automatically be granted the permission\nto pull the CodeCommit repository.\n\nAdd branches:\n\n```python\n# amplify_app: amplify.App\n\n\nmaster = amplify_app.add_branch(\"master\") # `id` will be used as repo branch name\ndev = amplify_app.add_branch(\"dev\",\n    performance_mode=True\n)\ndev.add_environment(\"STAGE\", \"dev\")\n```\n\nAuto build and pull request preview are enabled by default.\n\nAdd custom rules for redirection:\n\n```python\n# amplify_app: amplify.App\n\namplify_app.add_custom_rule({\n    \"source\": \"/docs/specific-filename.html\",\n    \"target\": \"/documents/different-filename.html\",\n    \"status\": amplify.RedirectStatus.TEMPORARY_REDIRECT\n})\n```\n\nWhen working with a single page application (SPA), use the\n`CustomRule.SINGLE_PAGE_APPLICATION_REDIRECT` to set up a 200\nrewrite for all files to `index.html` except for the following\nfile extensions: css, gif, ico, jpg, js, png, txt, svg, woff,\nttf, map, json, webmanifest.\n\n```python\n# my_single_page_app: amplify.App\n\n\nmy_single_page_app.add_custom_rule(amplify.CustomRule.SINGLE_PAGE_APPLICATION_REDIRECT)\n```\n\nAdd a domain and map sub domains to branches:\n\n```python\n# amplify_app: amplify.App\n# master: amplify.Branch\n# dev: amplify.Branch\n\n\ndomain = amplify_app.add_domain(\"example.com\",\n    enable_auto_subdomain=True,  # in case subdomains should be auto registered for branches\n    auto_subdomain_creation_patterns=[\"*\", \"pr*\"]\n)\ndomain.map_root(master) # map master branch to domain root\ndomain.map_sub_domain(master, \"www\")\ndomain.map_sub_domain(dev)\n```\n\n## Restricting access\n\nPassword protect the app with basic auth by specifying the `basicAuth` prop.\n\nUse `BasicAuth.fromCredentials` when referencing an existing secret:\n\n```python\namplify_app = amplify.App(self, \"MyApp\",\n    source_code_provider=amplify.GitHubSourceCodeProvider(\n        owner=\"<user>\",\n        repository=\"<repo>\",\n        oauth_token=SecretValue.secrets_manager(\"my-github-token\")\n    ),\n    basic_auth=amplify.BasicAuth.from_credentials(\"username\", SecretValue.secrets_manager(\"my-github-token\"))\n)\n```\n\nUse `BasicAuth.fromGeneratedPassword` to generate a password in Secrets Manager:\n\n```python\namplify_app = amplify.App(self, \"MyApp\",\n    source_code_provider=amplify.GitHubSourceCodeProvider(\n        owner=\"<user>\",\n        repository=\"<repo>\",\n        oauth_token=SecretValue.secrets_manager(\"my-github-token\")\n    ),\n    basic_auth=amplify.BasicAuth.from_generated_password(\"username\")\n)\n```\n\nBasic auth can be added to specific branches:\n\n```python\n# amplify_app: amplify.App\n\namplify_app.add_branch(\"feature/next\",\n    basic_auth=amplify.BasicAuth.from_generated_password(\"username\")\n)\n```\n\n## Automatically creating and deleting branches\n\nUse the `autoBranchCreation` and `autoBranchDeletion` props to control creation/deletion\nof branches:\n\n```python\namplify_app = amplify.App(self, \"MyApp\",\n    source_code_provider=amplify.GitHubSourceCodeProvider(\n        owner=\"<user>\",\n        repository=\"<repo>\",\n        oauth_token=SecretValue.secrets_manager(\"my-github-token\")\n    ),\n    auto_branch_creation=amplify.AutoBranchCreation( # Automatically connect branches that match a pattern set\n        patterns=[\"feature/*\", \"test/*\"]),\n    auto_branch_deletion=True\n)\n```\n\n## Adding custom response headers\n\nUse the `customResponseHeaders` prop to configure custom response headers for an Amplify app:\n\n```python\namplify_app = amplify.App(self, \"App\",\n    source_code_provider=amplify.GitHubSourceCodeProvider(\n        owner=\"<user>\",\n        repository=\"<repo>\",\n        oauth_token=SecretValue.secrets_manager(\"my-github-token\")\n    ),\n    custom_response_headers=[amplify.CustomResponseHeader(\n        pattern=\"*.json\",\n        headers={\n            \"custom-header-name-1\": \"custom-header-value-1\",\n            \"custom-header-name-2\": \"custom-header-value-2\"\n        }\n    ), amplify.CustomResponseHeader(\n        pattern=\"/path/*\",\n        headers={\n            \"custom-header-name-1\": \"custom-header-value-2\"\n        }\n    )\n    ]\n)\n```\n\n## Deploying Assets\n\n`sourceCodeProvider` is optional; when this is not specified the Amplify app can be deployed to using `.zip` packages. The `asset` property can be used to deploy S3 assets to Amplify as part of the CDK:\n\n```python\nimport aws_cdk.aws_s3_assets as assets\n\n# asset: assets.Asset\n# amplify_app: amplify.App\n\nbranch = amplify_app.add_branch(\"dev\", asset=asset)\n```\n\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "The CDK Construct Library for AWS::Amplify",
    "version": "1.203.0",
    "project_urls": {
        "Homepage": "https://github.com/aws/aws-cdk",
        "Source": "https://github.com/aws/aws-cdk.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f0896af4b6a5877d31d36e740e328aa84516f8f97384a2b3bf5233baa5ac8cb2",
                "md5": "53a71b4f543fbb1d30a837844b6e5b4b",
                "sha256": "db46d7778b6d8e0eddf1e7870cd2dbe569b554e208af424e76d7e9fe0918facf"
            },
            "downloads": -1,
            "filename": "aws_cdk.aws_amplify-1.203.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "53a71b4f543fbb1d30a837844b6e5b4b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "~=3.7",
            "size": 177578,
            "upload_time": "2023-05-31T22:52:22",
            "upload_time_iso_8601": "2023-05-31T22:52:22.530303Z",
            "url": "https://files.pythonhosted.org/packages/f0/89/6af4b6a5877d31d36e740e328aa84516f8f97384a2b3bf5233baa5ac8cb2/aws_cdk.aws_amplify-1.203.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "564a713e93bf409ae1c97817fd9f4e39063de06aa96005adce73971181e54768",
                "md5": "f5b323bd7183cd37eeecc8d4ce7f2ff7",
                "sha256": "d57b59cd29bcbcd7d82e517176480b99831fd054a1855b37174cef5fa0a0e4ea"
            },
            "downloads": -1,
            "filename": "aws-cdk.aws-amplify-1.203.0.tar.gz",
            "has_sig": false,
            "md5_digest": "f5b323bd7183cd37eeecc8d4ce7f2ff7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "~=3.7",
            "size": 178608,
            "upload_time": "2023-05-31T23:00:24",
            "upload_time_iso_8601": "2023-05-31T23:00:24.368333Z",
            "url": "https://files.pythonhosted.org/packages/56/4a/713e93bf409ae1c97817fd9f4e39063de06aa96005adce73971181e54768/aws-cdk.aws-amplify-1.203.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-31 23:00:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aws",
    "github_project": "aws-cdk",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "aws-cdk.aws-amplify"
}
        
Elapsed time: 0.21211s