aws-cdk.aws-amplify-alpha


Nameaws-cdk.aws-amplify-alpha JSON
Version 2.170.0a0 PyPI version JSON
download
home_pagehttps://github.com/aws/aws-cdk
SummaryThe CDK Construct Library for AWS::Amplify
upload_time2024-11-22 04:42:14
maintainerNone
docs_urlNone
authorAmazon Web Services
requires_python~=3.8
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-->---


![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


main = amplify_app.add_branch("main") # `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
# main: 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(main) # map main branch to domain root
domain.map_sub_domain(main, "www")
domain.map_sub_domain(dev)
```

To specify a custom certificate for your custom domain use the `customCertificate` property:

```python
# custom_certificate: acm.Certificate
# amplify_app: amplify.App


domain = amplify_app.add_domain("example.com",
    custom_certificate=custom_certificate
)
```

## 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"
        }
    )
    ]
)
```

## Configure server side rendering when hosting app

Setting the `platform` field on the Amplify `App` construct can be used to control whether the app will host only static assets or server side rendered assets in addition to static. By default, the value is set to `WEB` (static only), however, server side rendering can be turned on by setting to `WEB_COMPUTE` as follows:

```python
amplify_app = amplify.App(self, "MyApp",
    platform=amplify.Platform.WEB_COMPUTE
)
```

## Cache Config

Amplify uses Amazon CloudFront to manage the caching configuration for your hosted applications. A cache configuration is applied to each app to optimize for the best performance.

Setting the `cacheConfigType` field on the Amplify `App` construct can be used to control cache configguration. By default, the value is set to `AMPLIFY_MANAGED`. If you want to exclude all cookies from the cache key, set `AMPLIFY_MANAGED_NO_COOKIES`.

For more information, see [Managing the cache configuration for an app](https://docs.aws.amazon.com/amplify/latest/userguide/caching.html).

```python
amplify_app = amplify.App(self, "MyApp",
    cache_config_type=amplify.CacheConfigType.AMPLIFY_MANAGED_NO_COOKIES
)
```

## 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-alpha",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "~=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Amazon Web Services",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/82/51/8cd0e8eecca6bb6b2541b80c29a0e03f3c9f6091300c08d4d4f6ae94ca76/aws_cdk_aws_amplify_alpha-2.170.0a0.tar.gz",
    "platform": null,
    "description": "# AWS Amplify Construct Library\n\n<!--BEGIN STABILITY BANNER-->---\n\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\nmain = amplify_app.add_branch(\"main\") # `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# main: 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(main) # map main branch to domain root\ndomain.map_sub_domain(main, \"www\")\ndomain.map_sub_domain(dev)\n```\n\nTo specify a custom certificate for your custom domain use the `customCertificate` property:\n\n```python\n# custom_certificate: acm.Certificate\n# amplify_app: amplify.App\n\n\ndomain = amplify_app.add_domain(\"example.com\",\n    custom_certificate=custom_certificate\n)\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## Configure server side rendering when hosting app\n\nSetting the `platform` field on the Amplify `App` construct can be used to control whether the app will host only static assets or server side rendered assets in addition to static. By default, the value is set to `WEB` (static only), however, server side rendering can be turned on by setting to `WEB_COMPUTE` as follows:\n\n```python\namplify_app = amplify.App(self, \"MyApp\",\n    platform=amplify.Platform.WEB_COMPUTE\n)\n```\n\n## Cache Config\n\nAmplify uses Amazon CloudFront to manage the caching configuration for your hosted applications. A cache configuration is applied to each app to optimize for the best performance.\n\nSetting the `cacheConfigType` field on the Amplify `App` construct can be used to control cache configguration. By default, the value is set to `AMPLIFY_MANAGED`. If you want to exclude all cookies from the cache key, set `AMPLIFY_MANAGED_NO_COOKIES`.\n\nFor more information, see [Managing the cache configuration for an app](https://docs.aws.amazon.com/amplify/latest/userguide/caching.html).\n\n```python\namplify_app = amplify.App(self, \"MyApp\",\n    cache_config_type=amplify.CacheConfigType.AMPLIFY_MANAGED_NO_COOKIES\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",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "The CDK Construct Library for AWS::Amplify",
    "version": "2.170.0a0",
    "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": "cc6a8ad0975bf8fcfbc54dba55b9f25acb67a99ca17969c588595ec619496159",
                "md5": "16b72a22ba81f0b26be87b3a860d77f1",
                "sha256": "052dedab3095ef16cf8debe5b6f5f7f3b63a868eadd8688e919e773ce8216763"
            },
            "downloads": -1,
            "filename": "aws_cdk.aws_amplify_alpha-2.170.0a0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "16b72a22ba81f0b26be87b3a860d77f1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "~=3.8",
            "size": 109880,
            "upload_time": "2024-11-22T04:41:21",
            "upload_time_iso_8601": "2024-11-22T04:41:21.021243Z",
            "url": "https://files.pythonhosted.org/packages/cc/6a/8ad0975bf8fcfbc54dba55b9f25acb67a99ca17969c588595ec619496159/aws_cdk.aws_amplify_alpha-2.170.0a0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82518cd0e8eecca6bb6b2541b80c29a0e03f3c9f6091300c08d4d4f6ae94ca76",
                "md5": "ae457b6896ae0e515f5b6952af34b080",
                "sha256": "0559a4a56a10ffa3b8bcd534b041471825a003ff47ff41101a430a6616b7ebca"
            },
            "downloads": -1,
            "filename": "aws_cdk_aws_amplify_alpha-2.170.0a0.tar.gz",
            "has_sig": false,
            "md5_digest": "ae457b6896ae0e515f5b6952af34b080",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "~=3.8",
            "size": 110858,
            "upload_time": "2024-11-22T04:42:14",
            "upload_time_iso_8601": "2024-11-22T04:42:14.135013Z",
            "url": "https://files.pythonhosted.org/packages/82/51/8cd0e8eecca6bb6b2541b80c29a0e03f3c9f6091300c08d4d4f6ae94ca76/aws_cdk_aws_amplify_alpha-2.170.0a0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-22 04:42:14",
    "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-alpha"
}
        
Elapsed time: 0.86553s