# 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"
}